short[]
PrimitivSpeichert 16-Bit-Ganzzahlen. Spart Speicher gegenüber int[] wenn Werte in den Bereich -32.768 bis 32.767 passen.
016 Bit-32.76832.767Visualisierung
54016 BitDeklaration
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 kHzInitialisierung
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 → 32768Hintergrü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.