Zweck der byte-Datentyp in Java
Lese ich diese Zeile im Java-tutorial:
byte: Der Datentyp byte ist eine 8-bit mit Vorzeichen Zweierkomplement-Ganzzahl. Es hat
ein minimaler Wert von -128 und einem maximalen Wert von 127 (inklusive). Die
byte-Datentyp kann nützlich sein für das speichern der Speicher in großen arrays, wo
speicherintensive wirklich wichtig ist. Sie können auch verwendet werden, anstelle von
int wo Ihre Grenzen und helfen zu klären, Ihre code; die Tatsache, dass ein
variable range ist beschränkt, kann als eine form der Dokumentation.
Ich nicht deutlich verstehen, die kräftige Linie. Kann jemand erklären es für mich?
- Habe ich gab eine Antwort, aber wer schrieb dieses tutorial, es ist meiner Meinung nach nur BS. Niemand sollte sich täuschen sich selbst, indem Sie denken, es ist eine richtige form der Dokumentation.
- Ich glaube nicht, dass Sie meinen, es als Ersatz für die eigentliche Dokumentation. Sie sind wahrscheinlich sagen, dass durch das Lesen byte, denkt man automatisch an den Umfang der Werte, im Gegensatz zu int, wo die Auswahl ist so groß, dass Sie denken einfach, Anzahl.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Byte hat eine (signierte) im Bereich von -128 bis 127, wobei als int hat (auch signiert) Spektrum von -2,147,483,648 bis 2,147,483,647.
Was es bedeutet ist, dass, da die Werte, die Sie verwenden, wird immer zwischen diesem Bereich, durch die Verwendung der byte-Typ, den Sie sagen, wer liest, Ihre code-dieser Wert wird bei den meisten zwischen -128 bis 127 immer die zimmerreserviereung, ohne das Dokument darüber.
Immer noch, ordnungsgemäße Dokumentation ist immer der Schlüssel, und Sie sollten es nur nutzen, in dem Fall angegeben, für eine bessere Lesbarkeit, nicht als Ersatz für die Dokumentation.
Wenn Sie eine variable, die maximale Wert beträgt 127, die Sie verwenden können
byte
stattint
damit andere wissen, ohne zu Lesen alleif
Bedingungen nach, die können überprüfen Sie die Grenzen, dass diese variable kann nur einen Wert zwischen -128 und 127.So, es ist eine Art von selbst-dokumentierenden code - wie bereits in dem text, den Sie zitieren.
Persönlich glaube ich nicht empfehlen diese Art von "Dokumentation" - nur weil eine variable kann nur einen maximalen Wert von 127 nicht offenbart, es ist wirklich Zweck.
Ich mir vorstellen, man kann
byte
für alles, was den Umgang mit tatsächlichen bytes.Auch, die Teile (rot, grün und blau) Farben haben allgemein einen Bereich von 0-255 (obwohl
byte
ist technisch -128 bis 127, aber das ist die gleiche Menge von zahlen).Kann es auch anderen nutzt.
Die Allgemeine opposition, muss ich mit
byte
(und wahrscheinlich der Grund, warum es nicht gesehen, so oft, wie es sein kann) ist, dass es gibt viele casting benötigt. Zum Beispiel, wenn Sie arithmetische Operationen auf einebyte
(außerX=
), ist es automatisch gefördertint
(auchbyte+byte
), so dass Sie haben, um Sie zu wirken, wenn Sie wollen, um es wieder in einebyte
.Ein sehr elementares Beispiel:
FileInputStream::Lesen gibt eine
byte
eingewickelt in einint
(oder -1). Dieser kann geworfen werden, um einebyte
deutlicher machen. Ich bin nicht die Unterstützung dieses Beispiel als solches (weil ich wirklich nicht (in diesem moment) finden Sie den Punkt zu tun, der unten), einfach nur sagen, etwas ähnliches kann Sinn machen.Könnte es auch zurückgegeben ein byte in den ersten Platz (und möglicherweise eine Ausnahme geworfen, wenn end-of-file). Dies kann noch deutlicher, aber die Art und Weise es gemacht wurde, keinen Sinn machen.
Wenn Sie nicht wissen viel über
FileInputStream
können Sie nicht wissen, wasread
gibt, so sehen Sie eineint
- und Sie können davon ausgehen, der gültige Bereich ist der gesamte Bereich derint
(-2^31 bis 2^31-1), oder vielleicht die Reichweite eineschar
(0-65535) (keine schlechte Annahme für die Datei-Operationen), aber dann sehen Sie die Darsteller zubyte
und Sie geben einen zweiten Gedanken.Wenn der Rückgabetyp wurden
byte
würdest du wissen, der gültige Bereich von Anfang an.Ein weiteres Beispiel:
Einer Farbe's Konstruktoren haben könnte wurde geändert von 3
int
's auf 3byte
's statt, da Ihre Reichweite ist begrenzt auf 0-255.read
gibt einebyte
eingewickelt in einint
.int
. Ein Rückgabewert von-1
zeigt das Ende der Datei, diese Informationen gehen verloren, wenn Sie warf es zubyte
sofort (seit255
ist auch ein Gültiger Rückgabewert, der wird-1
wenn der Zauber zuint
), müssen Sie die-1
check bevor casting-byte.Integers
in Java gespeichert in 32 bit;bytes
gespeichert in 8 bits.Lassen Sie uns sagen, Sie haben ein array mit einer million Einträgen. Huch! Das ist riesig!
Nun, für jede dieser ganzen zahlen in
foo
verwenden Sie 32 bits oder 4 bytes Speicher. Insgesamt, das ist 4 Millionen bytes, oder 4MB.Denken Sie daran, dass ein
integer
in Java ist eine ganze Zahl zwischen 2.147.483.648 und 2.147.483.647 inklusive. Was ist, wenn Ihr arrayfoo
muss nur enthalten ganze zahlen zwischen 1 und 100? Das ist eine ganze Menge von zahlen, die Sie nicht verwenden, indem Sie erklärtfoo
alsint
array.Dies ist, wenn
byte
wird hilfreich.Bytes
speichern ganze zahlen zwischen -128 und 127 inklusive, die ist perfekt für das, was Sie brauchen! Aber warumbytes
? , Weil Sie ein Viertel des Raumes der ganzen zahlen. Nun dein array ist eine Verschwendung, weniger Speicher:Nun jeder Eintrag in
foo
nimmt 8 bits oder 1 byte Speicher, also insgesamtfoo
nimmt nur 1 million bytes oder 1MB Speicher.Das ist ein riesige Verbesserung gegenüber der Verwendung
int[]
- Sie gerade gespeichert 3MB Speicher.Klar, Sie würde nicht wollen, verwenden Sie diese für arrays, halten zahlen, die mehr als 127 ist, also eine andere Art des Lesens, die Fette Linie, die Sie erwähnt, , Da sind die bytes begrenzte Reichweite, so können die Entwickler wissen, dass die variable beschränkt sich streng auf diese Grenzen. Es gibt keinen Grund für die Entwickler davon aus, dass eine Zahl gespeichert als ein byte würde immer maximal 127 oder kleiner als -128. Mit geeigneten Datentypen spart Platz und informiert die Entwickler der Beschränkungen auf die Variablen.
Bedeutet es, dass das wissen, dass ein Wert ausdrücklich als eine sehr kleine Zahl, die helfen könnten, Sie werden sich erinnern, wozu das gut sein sollte.
Gehen für echte docs, wenn Sie erstellen eine Dokumentation für den code, obwohl, die sich auf Datentypen ist nicht Dokumentation.
Int umfasst die Werte von 0 bis 4294967295 oder 2 auf der 32nd macht. Das ist eine riesige Palette, und wenn Sie erzielte ein test, der aus 100 dann sind Sie verschwenden, dass extra spacce wenn alle zahlen zwischen 0 und 100. Es braucht nur mehr Speicher-und Festplattenkapazität zum speichern von int-Werten, und in schweren-Daten gestützten Anwendungen bedeutet dies Geld verschwendet, wenn Sie nicht die zusätzliche Reichweite, die ints liefern.
char
ist unsigniert, und im Grundeboolean
finden Sie unter dieser.byte-Datentypen werden im Allgemeinen verwendet, wenn Sie wollen, um Daten zu behandeln, die in den Formen des streams entweder aus der Datei oder aus dem Netzwerk. Grund dafür ist, weil Netzwerk und Dateien arbeiten, die auf dem Konzept von byte.
Beispiel: FileOutStream nimmt immer byte-array als input parameter.