⟨info/⟩

byte[]

Primitiv

Speichert 8-Bit-Ganzzahlen. Der wichtigste Array-Typ für Datei-I/O, Netzwerkkommunikation und Binärdaten.

Standardwert:0
Größe:8 Bit
Minimum:-128
Maximum:127

Visualisierung

byte[]5 Elemente
72
[0]
101
[1]
108
[2]
108
[3]
111
[4]
Länge:5
Letzter Index:4
Standardwert:0
Bits/Element:8 Bit

Deklaration

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

// Deklaration (Standardwerte: 0)
byte[] daten = new byte[1024]; // 1 KB Puffer

// Häufig für I/O-Puffer
byte[] puffer = new byte[4096]; // 4 KB

Initialisierung

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

// Initialisierung mit Literalen (Bereich: -128 bis 127)
byte[] bytes = {72, 101, 108, 108, 111}; // "Hello" in ASCII

// Cast nötig bei Werten > 127 oder negativen Werten als int-Literal
byte[] signed = {(byte) 200, (byte) -50, 0, 127, -128};

// Aus String (UTF-8 Bytes)
byte[] utf8 = "Hallo".getBytes(java.nio.charset.StandardCharsets.UTF_8);

// Datei einlesen
byte[] dateiInhalt = java.nio.file.Files.readAllBytes(java.nio.file.Path.of("datei.txt"));

Typische Operationen

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

byte[] arr = {72, 101, 108, 108, 111};

// Zugriff
byte b = arr[0];               // 72 (ASCII 'H')

// Als char darstellen
char c = (char) arr[0];        // 'H'

// Zu String (mit Charset)
String text = new String(arr, java.nio.charset.StandardCharsets.UTF_8); // "Hello"

// Bitweise Operationen
byte flags = arr[0];
boolean bit6 = (flags & 0x40) != 0; // Bit 6 gesetzt?
byte gesetzt = (byte) (flags | 0x01); // Bit 0 setzen
byte geloescht = (byte) (flags & ~0x01); // Bit 0 löschen

// Hex-Darstellung
for (byte x : arr) {
    System.out.printf("%02X ", x); // 48 65 6C 6C 6F
}

// Datei schreiben
java.nio.file.Files.write(java.nio.file.Path.of("out.bin"), arr);

Hintergründe & Details

byte[] ist der wichtigste Array-Typ für alles, was mit Rohdaten, Dateien und Netzwerken zu tun hat. Jedes Element speichert 8 Bit (1 Byte) mit Vorzeichen: -128 bis 127. Intern sind Bytes vorzeichenbehaftet in Java — für vorzeichenlose Bytes (0–255) benutzt man den Trick: int vorzeichenlos = b & 0xFF.

Warum byte[] für I/O? Alle Java-Streams (InputStream, OutputStream) arbeiten mit byte[]-Arrays. Wenn du eine Datei liest, erhältst du die Rohbytes. Wenn du Netzwerkdaten empfängst, kommen sie als Bytes. Das macht byte[] zum universellen Transport-Format.

ASCII und UTF-8: Die Zahlen 72, 101, 108, 108, 111 sind die ASCII-Codes für 'H', 'e', 'l', 'l', 'o'. ASCII ist eine Teilmenge von UTF-8, daher kann man diese Bytes direkt als Text interpretieren.

Bitweise Operationen: byte[] ist ideal für Protokoll-Parsing, Kompression, Verschlüsselung und Bildverarbeitung (Pixel-Werte). Bitweise AND (&), OR (|), XOR (^) und NOT (~) arbeiten direkt auf den Bytes.