47 Stimmen

Verwendet man in Java short oder byte?

Abgesehen von der Verwendung von (byte[]) im Streaming sehe ich Byte und Short nicht wirklich oft verwendet. Andererseits habe ich gesehen, dass long verwendet wird, wenn der tatsächliche Wert |100| ist und byte besser geeignet wäre. Ist dies eine Folge der relativ günstigen Natur des Speichers oder ist dies nur eine Kleinigkeit, um die sich die Entwickler nicht kümmern müssen?

1voto

Meistens gibt es für einen Entwickler (Java, C#, BASIC usw.) keinen wirklich guten technischen Grund, sich für einen int, short oder byte zu entscheiden - wenn die Kapazität ausreicht, natürlich. Wenn der Wert unter 2 Milliarden liegt, wird es int sein.

Sind Sie sicher, dass wir Leute haben werden, die älter als 255 sind? Nun, man kann nie wissen!

Sind 32.767 mögliche Länder nicht genug? Denken Sie nicht zu klein!

In Ihrem Beispiel können Sie mit Ihrer Byte-Var, die 100 enthält, vollkommen zufrieden sein, wenn Sie absolut sicher sind, dass sie NIE überlaufen wird. Warum wird int am häufigsten verwendet? Weil.... weil.

Das ist eines der Dinge, die die meisten von uns einfach tun, weil wir es die meiste Zeit so gesehen haben und nie anders gefragt haben.

Natürlich habe ich nichts gegen "all things int". Ich ziehe es nur vor, für jede Art von Wert den richtigen Typ zu verwenden, ganz ohne Stress.

0voto

Fahima Mokhtari Punkte 1073

Die allgemeinen Informationen, die Sie finden, sind die folgenden byte im Allgemeinen byte [] wird bei der Bearbeitung von Binärdaten, z. B. einer Bilddatei, oder beim Senden von Daten über das Netz verwendet. Ich werde jetzt andere Anwendungsfälle erwähnen:

Kodierung von Zeichenketten in Java

In Java verwendet das String-Objekt UTF-16, und letzteres ist unveränderlich d.h. nicht geändert werden kann.

Um Strings zu kodieren, konvertieren wir sie in UTF-8, was mit ASCII kompatibel ist. Eine Möglichkeit, dies zu tun, ist die Verwendung von Java Core. aquí .

Um die Kodierung durchzuführen, kopieren wir die ursprünglichen String-Bytes in ein Byte-Array und erstellen dann das gewünschte Array. Im Folgenden gebe ich ein einfaches Beispiel, das zeigt, warum wir Zeichenketten kodieren müssen und wie wir es tun:

  • Warum ist die Kodierung wichtig?

Stellen Sie sich vor, Sie haben dieses deutsche Wort "Tschüss" und verwenden US-ASCII:

String germanString = "Tschüss";
byte[] germanBytes = germanString.getBytes();

String asciiEncodedString = new String(germanBytes,StandardCharsets.US_ASCII);

assertNotEquals(asciiEncodedString, germanString);

und die Ausgabe wird einfach sein:

Tschüss

Weil US_ASCII das "ü" nicht erkennt.

Hier ist das Beispiel, das funktioniert:

String germanString = "Tschüss";
byte[] germanBytes = germanString.getBytes(StandardCharsets.UTF_8);

String utf8EncodedString = new String(germanBytes, StandardCharsets.UTF_8);

assertEquals(germanString, utf8EncodedString);

byte[ ] Manchmal besser als String in der Leistung

Für das Protokoll, Java String ist ein Objekt, das char Arrays unter der Haube verwendet, einschließlich anderer Daten, können Sie mehr finden in diese Antwort .

Stellen Sie sich nun den Fall vor, dass Sie eine große Menge an Zeichenkettendaten analysieren wollen und dazu zum Beispiel split Methode. In diesem Fall haben Sie verschiedene Objekte (verschiedene Char-Arrays), die an verschiedenen Stellen im Speicher verteilt sind, was zu einer schlechteren Ortschaft an die CPU, im Gegensatz zu dem Fall, in dem Sie ein Byte-Array von Anfang an an einer Stelle haben. Sie können mehr in diesem interessanten Beitrag herausfinden diese .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X