byte[]
PrimitivSpeichert 8-Bit-Ganzzahlen. Der wichtigste Array-Typ für Datei-I/O, Netzwerkkommunikation und Binärdaten.
08 Bit-128127Visualisierung
5408 BitDeklaration
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 KBInitialisierung
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.