In realtà ultimamente ho lavorato con i byte un po 'e possono essere fastidiosi. Si convertono in upts alla minima provocazione e non c'è designazione per trasformare un numero in un byte - per esempio, 8l ti darà un valore lungo 8, ma per byte devi dire (byte) 8
Inoltre, saranno (più o meno) sempre archiviati internamente come intevi a meno che non si stia utilizzando un array (e forse anche allora .. non sono sicuro).
Penso che basti pensare che l'unico motivo per utilizzare un byte è l'I/O in cui sono effettivamente necessari 8 bit, ma internamente si aspettano che tu usi sempre gli Ints.
Tra l'altro, un byte può eseguire peggio dal momento che ha sempre da mascherare ...
Almeno io ricordo di aver letto che anni fa, avrebbe potuto cambiare da ora.
Come esempio risposta per la tua domanda specifica, se una funzione (f) ha preso un byte, e si aveva due byte (B1 e B2), quindi:
f(b1 & b2)
non avrebbe funzionato, perché b1 & b2 verrebbe convertito in up ad un int, e l'int non potrebbe essere down-convertito automaticamente (perdita di precisione). Quindi dovresti scrivere il codice:
f((byte)(b1 & b2))
Quale sarebbe irritante.
E non preoccupatevi di chiedere PERCHÉ b1 & b2 up-converte - Ho fatto un po 'di maleducazione ultimamente io stesso!
fonte
2009-09-11 00:52:42
È necessario eseguire il cast dei valori maggiori di 0x7F, poiché i byte sono firmati. Non c'è niente di irritante a riguardo. È molto meglio che avere un mazzo di caratteri non firmati/firmati. Usa IDE, controllerà la sicurezza del tipo e farà il cast per te. Il funzionamento della maschera è un'istruzione, non influisce sulle prestazioni. –