⟨info/⟩

short[]

Primitiv

Speichert 16-Bit-Ganzzahlen. Spart Speicher gegenüber int[] wenn Werte in den Bereich -32.768 bis 32.767 passen.

Standardwert:0
Größe:16 Bit
Minimum:-32.768
Maximum:32.767

Visualisierung

short[]5 Elemente
100
[0]
-200
[1]
32767
[2]
0
[3]
-32768
[4]
Länge:5
Letzter Index:4
Standardwert:0
Bits/Element:16 Bit

Deklaration

So reservierst du Speicher für einen short[].

// Deklaration (Standardwerte: 0)
short[] werte = new short[5];

// Typisch für Audio-Samples (16-bit PCM)
short[] audioSamples = new short[44100]; // 1 Sekunde bei 44.1 kHz

Initialisierung

Verschiedene Wege, ein short[] mit Werten zu befüllen.

// Initialisierung – Cast erforderlich!
short[] werte = {100, -200, 32767, 0, -32768};

// Java behandelt Ganzzahl-Literale als int → Cast bei Zuweisung
short a = (short) 1000;  // expliziter Cast
short[] arr = {(short) 1000, (short) -500}; // meist unnötig bei Initialisierung

// Audio-typische Initialisierung
short[] pcm = new short[1024];
for (int i = 0; i < pcm.length; i++) {
    // Sinuswelle generieren
    pcm[i] = (short) (32767 * Math.sin(2 * Math.PI * i / 100));
}

Typische Operationen

Zugriff, Änderung, Iteration und häufige Patterns mit short[].

short[] arr = {100, -200, 32767, 0, -32768};

// Zugriff
short s = arr[2];              // 32767

// Achtung: Arithmetik wird zu int promoted!
short a = 30000, b = 30000;
// short c = a + b;            // FEHLER! Ergebnis ist int
short c = (short) (a + b);     // Cast nötig → Überlauf: -5536

// Überlauf prüfen
int summe = (int) a + (int) b; // sicher: 60000

// Sortieren und ausgeben
import java.util.Arrays;
Arrays.sort(arr);
System.out.println(Arrays.toString(arr)); // [-32768, -200, 0, 100, 32767]

// In int umrechnen (vorzeichenlos: 0-65535)
int vorzeichenlos = arr[0] & 0xFFFF; // -32768 → 32768

Hintergründe & Details

short[] ist ein 16-Bit-Ganzzahl-Array mit Vorzeichen (-32.768 bis 32.767). Er spart im Vergleich zu int[] die Hälfte des Speichers pro Element (2 statt 4 Byte). In der Praxis wird er verwendet, wenn der Wertebereich passt und Speicher ein kritischer Faktor ist.

Automatische Promotion: Java "promoted" short zu int bei Arithmetic-Operationen. Das bedeutet: short + short ergibt int, nicht short. Du musst explizit zurückcasten: (short)(a + b). Das kann zu unerwarteten Überläufen führen — Vorsicht!

Praxisbeispiel Audio: 16-Bit PCM-Audio (der Standard für WAV-Dateien und CD-Qualität) speichert Samples als short-Werte von -32.768 bis 32.767. Java Sound API arbeitet direkt mit short[]-Arrays für Audio-Verarbeitung.

Wann short[] wählen? Nur wenn du große Mengen Daten hast und der Wertebereich passt. Für kleine Arrays lohnt der Speicher-Vorteil nicht. int[] ist in allen anderen Fällen die bessere Wahl, weil Java intern sowieso mit int rechnet.