Domanda

Sto programmando in Java dal 2004, principalmente applicazioni aziendali e web. Ma non ho mai usato short o byte , a parte un programma giocattolo solo per sapere come funzionano questi tipi. Anche in un for loop di 100 volte, di solito andiamo con int . E non ricordo se mi sono mai imbattuto in alcun codice che utilizzava byte o corto , tranne alcune API e framework pubblici.

Sì, lo so, puoi usare un corto o byte per risparmiare memoria in array di grandi dimensioni, in situazioni in cui il risparmio di memoria conta davvero. A qualcuno importa praticarlo? O è solo qualcosa nei libri.

[Modificato]

L'uso di matrici byte per la programmazione di rete e la comunicazione socket è un uso abbastanza comune. Grazie, Darren, per averlo fatto notare. Che ne dici di short ? Ryan, ha dato un esempio eccellente. Grazie, Ryan.

È stato utile?

Soluzione

Tieni presente che Java viene utilizzato anche su dispositivi mobili, dove la memoria è molto più limitata.

Altri suggerimenti

Uso molto il byte. Solitamente sotto forma di array di byte o ByteBuffer, per comunicazioni di rete di dati binari.

Uso raramente float o double e non credo di aver mai usato short.

Ho usato molto 'byte', nel codice C / C ++ implementando funzionalità come la compressione delle immagini (ovvero eseguendo un algoritmo di compressione su ogni byte di una bitmap in bianco e nero) ed elaborando binario messaggi di rete (interpretando i byte nel messaggio).

Comunque non ho praticamente mai usato 'float' o 'double'.

L'uso principale che ho visto per loro è durante l'elaborazione di dati con una struttura sconosciuta o addirittura nessuna struttura reale. La programmazione in rete è un esempio del primo (chiunque stia inviando i dati sa cosa significa, ma potresti non farlo), qualcosa come la compressione delle immagini a 256 colori (o in scala di grigi) è un esempio del secondo.

Dall'alto della mia testa mi viene in mente grep come un altro uso, così come qualsiasi tipo di copia di file. (Certo, il sistema operativo lo farà, ma a volte non è abbastanza buono.)

Il linguaggio Java stesso rende irragionevolmente difficile usare i tipi byte o short . Ogni volta che si esegue qualsiasi operazione su un valore byte o short , Java lo promuove prima in un int e il risultato dell'operazione viene restituito come un int . Inoltre, sono firmati e non esistono equivalenti non firmati, che è un'altra fonte frequente di frustrazione.

Quindi finisci per usare byte perché è ancora l'elemento base di tutte le cose cyber, ma il tipo short potrebbe anche non esistere.

Fino ad oggi non ho notato quanto raramente li uso.

Ho usato byte per cose relative alla rete, ma il più delle volte erano per i miei strumenti / apprendimento. Nei progetti di lavoro queste cose sono gestite da framework (ad esempio JSP)

Breve? quasi mai.

Long? Nessuno dei due.

I miei letterali interi preferiti sono sempre int, per loop, contatori, ecc.

Quando i dati provengono da un altro posto (ad esempio un database), utilizzo il tipo corretto, ma per i letterali uso sempre int.

Uso i byte in molti luoghi diversi, principalmente con l'elaborazione dei dati di basso livello. Sfortunatamente, i progettisti del linguaggio Java hanno creato byte firmati. Non riesco a pensare a nessuna situazione in cui avere valori di byte negativi sia stato utile. Avere un intervallo 0-255 sarebbe stato molto più utile.

Non credo di aver mai usato cortometraggi in nessun codice appropriato. Inoltre non uso mai i float (se ho bisogno di valori in virgola mobile, uso sempre il doppio).

Sono d'accordo con Tom . Idealmente, in linguaggi di alto livello non dovremmo preoccuparci delle rappresentazioni della macchina sottostante. Dovremmo essere in grado di definire i nostri intervalli o utilizzare numeri di precisione arbitrari.

quando stiamo programmando per dispositivi elettronici come il telefono cellulare usiamo byte e short. In questo caso dovremmo occuparci della gestione della memoria.

È forse più interessante guardare la semantica di int. Quei limiti arbitrari e il troncamento silenzioso sono ciò che vuoi? Perché il codice a livello di applicazione vuole numeri interi di dimensioni arbitrarie, è solo che Java non ha modo di esprimerli ragionevolmente.

Ho usato byte durante il salvataggio dello stato mentre facevo il controllo del modello. In quell'applicazione, i risparmi di spazio valgono il lavoro extra. Altrimenti non li uso mai.

Ho scoperto che stavo usando le variabili byte durante l'elaborazione di immagini di basso livello. Le routine di sorteggio .Net GDI + erano molto lente, quindi ho fatto il mio turno a mano.

La maggior parte delle volte, tuttavia, rimango con numeri interi con segno a meno che non sia costretto a usare qualcosa di più grande, dati i vincoli del problema. Qualsiasi tipo di modellazione fisica che faccio di solito richiede galleggianti o doppi, anche se non ho bisogno della precisione.

POI di Apache utilizzava short parecchie volte. Probabilmente a causa della limitazione del numero di riga / colonna di Excel.

Alcuni mesi fa sono cambiati in int sostituendo

createCell (short columnIndex )

con

createCell (colonna int ) .

Su datagrid in memoria, può essere utile. Il concetto di un datagrid come Gemfire è di avere un'enorme mappa distribuita. Quando non hai abbastanza memoria puoi overflow su disco con la strategia LRU, ma le chiavi di tutte le voci della tua mappa rimangono in memoria (almeno con Gemfire).

Pertanto è molto importante creare le chiavi con un ingombro ridotto, in particolare se si gestiscono set di dati molto grandi. Per quanto riguarda il valore della voce, quando puoi è anche meglio usare il tipo appropriato con un minimo ingombro di memoria ...

Ho usato short e byte nelle app Java comunicando con microcontrollori USB o seriali personalizzati per ricevere valori a 10 bit racchiusi in 2 byte come short.

byte se short sono ampiamente utilizzati nello sviluppo di Java Card. Dai un'occhiata alla mia risposta a Esistono usi reali per il tipo primitivo di byte Java? .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top