2008-12-31 5 views
11

Ich habe seit 2004 in Java programmiert, hauptsächlich Unternehmens- und Webanwendungen. Aber ich habe nie kurz oder Byte, außer einem Spielzeugprogramm verwendet, nur um zu wissen, wie diese Typen funktionieren. Selbst in einem für die Schleife von 100 Mal gehen wir normalerweise mit int. Und ich erinnere mich nicht, wenn ich jemals auf einen Code gestoßen bin, der byte oder short verwendet hat, abgesehen von einigen öffentlichen APIs und Frameworks.Wer nutzt kurze und byte primitive Typen in echten Apps?

Ja, ich weiß, können Sie einen kurzen oder Byte verwenden, um Speicher in großen Arrays zu speichern, in Situationen, in denen die Speichereinsparungen tatsächlich ankommen. Möchte jemand das üben? Oder es ist nur etwas in den Büchern.

[Edited]

Mit Byte Arrays für Netzwerkprogrammierung und Socket-Kommunikation ist ein recht verbreiteter Gebrauch. Danke, Darren, um darauf hinzuweisen. Wie wäre es nun mit short? Ryan, gab ein ausgezeichnetes Beispiel. Danke, Ryan.

Antwort

8

Denken Sie daran, dass Java auch auf mobilen Geräten verwendet wird, wo der Speicher viel begrenzter ist.

4

Ich habe 'Byte' viel, in C/C++ Code implementiert Funktionalität wie Bildkomprimierung (dh Ausführen eines Komprimierungsalgorithmus über jedes Byte einer schwarz-weißen Bitmap), und binäre Netzwerkmeldungen (von Interpretieren der Bytes in der Nachricht).

Allerdings habe ich praktisch nie 'float' oder 'double' verwendet.

+1

Ahan .. Vielleicht wegen der Domäne, in der Sie arbeiten. Ähnliches könnte für mich wahr sein. –

11

Ich benutze Byte viel. In der Regel in Form von Byte-Arrays oder ByteBuffer, für die Netzwerkkommunikation von Binärdaten.

Ich verwende selten float oder double, und ich glaube nicht, dass ich jemals kurz verwendet habe.

1

Ich habe beim Speichern des Zustands während der Modellprüfung Bytes verwendet. In dieser Anwendung sind die Platzeinsparungen die zusätzliche Arbeit wert. Ansonsten benutze ich sie nie.

4

Die primäre Verwendung, die ich für sie gesehen habe, ist während der Verarbeitung von Daten mit einer unbekannten Struktur oder sogar ohne echte Struktur. Die Netzwerkprogrammierung ist ein Beispiel für den ersten (wer auch immer die Daten sendet weiß, was es bedeutet, aber Sie vielleicht nicht), so etwas wie Bildkomprimierung von 256-Farben (oder Graustufen) Bilder ist ein Beispiel für letztere.

Aus der Spitze meines Kopfes kommt grep als eine andere Verwendung, wie jede Art von Dateikopie. (Sicher, das Betriebssystem wird es tun - aber manchmal ist das nicht gut genug.)

1

Ich habe festgestellt, dass ich Byte-Variablen verwendet, wenn einige Low-Level-Bildverarbeitung. Die .Net GDI + -Zeichnungsroutinen waren wirklich langsam, also habe ich meine eigene Hand gerollt.

Meistens bleibe ich bei vorzeichenbehafteten Ganzzahlen, außer wenn ich gezwungen bin, etwas Größeres zu verwenden, wenn man die Probleme des Problems bedenkt. Jede Art von Physikmodellierung, die ich normalerweise mache, erfordert Floats oder Doubles, auch wenn ich die Genauigkeit nicht brauche.

4

Die Java-Sprache selbst macht es unbegründet schwierig, die byte oder short Typen zu verwenden. Wenn Sie eine Operation an einem byte oder short Wert ausführen, wird von Java zuerst an eine int hochgestuft, und das Ergebnis der Operation wird als int zurückgegeben. Außerdem sind sie signiert, und es gibt keine unsignierten Äquivalente, was eine weitere häufige Quelle der Frustration ist.

Also am Ende mit byte viel, weil es immer noch der Grundbaustein aller Dinge Cyber ​​ist, aber der short Typ könnte ebenso nicht existieren.

+0

Zustimmen. int-Literale sind einfacher zu programmieren (Schleifen, Zähler usw.), aber für spezielle Funktionen, wie von anderen erwähnt, sind diese Typen sehr praktisch. – OscarRyz

3

Bis heute habe ich nicht gemerkt, wie selten ich sie benutze.

Ich habe Byte für Netzwerk-bezogene Sachen verwendet, aber die meiste Zeit waren sie für meine eigenen Tools/Lernen. In Arbeitsprojekten werden diese Dinge von Frameworks gehandhabt (zB JSP)

Kurz? fast nie.

Lange? Weder.

Meine bevorzugten Ganzzahlliterale sind immer int, für Schleifen, Zähler usw.

Wenn Daten von einem anderen Ort kommen (eine Datenbank zum Beispiel) Ich verwende die richtige Art, aber für Literale Ich benutze immer int.

+0

Für Datenbanken verwende ich normalerweise Wrapper. Ja, wegen der bekannten Null. –

+0

mmhh Ich habe ein gemischtes Gefühl über Wrapper. Zum Glück mit Java 1.5 die meiste Zeit ist es nach Autoboximg transparent – OscarRyz

2

Es ist vielleicht interessanter, die Semantik von int zu betrachten. Sind diese willkürlichen Grenzen und stille Kürzung, was Sie wollen? Für den Code auf Anwendungsebene werden tatsächlich Integer beliebiger Größe benötigt. Java hat jedoch keine Möglichkeit, diese vernünftig auszudrücken.

3

Ich benutze Bytes in vielen verschiedenen Orten, meist mit Low-Level-Datenverarbeitung. Leider haben die Designer der Java-Sprache Bytes signiert. Ich kann mir keine Situation vorstellen, in der negative Bytewerte nützlich waren. Eine Reichweite von 0-255 wäre viel hilfreicher gewesen.

Ich glaube nicht, dass ich jemals Shorts in einem geeigneten Code verwendet habe. Ich verwende auch niemals Floats (wenn ich Gleitkommazahlen brauche, verwende ich immer Double).

Ich stimme zu Tom. Im Idealfall sollten wir uns in höheren Sprachen nicht mit den zugrunde liegenden Maschinendarstellungen befassen. Wir sollten in der Lage sein, eigene Bereiche zu definieren oder beliebige Präzisionszahlen zu verwenden.

3

Wenn wir für elektronische Geräte wie Mobiltelefone programmieren, verwenden wir byte und short. In diesem Fall sollten wir uns um die Speicherverwaltung kümmern.

1

Bei In-Memory-Datagrids kann es nützlich sein. Das Konzept eines Datagrids wie Gemfire ist eine riesige verteilte Karte zu haben. Wenn Sie nicht genug Speicher haben, können Sie mit der LRU-Strategie auf die Festplatte überlaufen, aber die Schlüssel aller Einträge Ihrer Karte bleiben im Speicher (zumindest bei Gemfire).

Daher ist es sehr wichtig, Ihre Schlüssel mit einer kleinen Grundfläche zu machen, besonders wenn Sie sehr große Datenmengen verarbeiten. Für den Eingabewert, wenn Sie es können auch besser den entsprechenden Typ mit einem geringen Speicherbedarf ...

sind in Java Card Entwicklung intensiv genutzt
1

Ich habe Shorts und Bytes in Java-Apps verwendet, die an benutzerdefinierte USB- oder serielle Mikrocontroller kommunizieren, um 10-Bit-Werte zu empfangen, die in 2 Bytes als Kurzschlüsse verpackt sind.