Qual'è la differenza tra byte e byte? [duplicare]

2

Bene, ovviamente, conosco le differenze. byte è un primitivo e Byte è un oggetto. Byte offre più funzioni ma c'è una cosa che non capisco. Perché qualcuno dovrebbe creare una variabile usando Byte? Ci vuole molto più tempo Ad esempio:

byte primitive:
byte mikeHawk = 5;

Byte object:
byte blackHawk = Byte.valueOf((byte)5);

Ho letto un libro di Java e mi ha insegnato le primitive degli oggetti. Voglio dire, è molto più facile da aggiungere e sottrarre anche con i primitivi. Forse mi manca qualcosa. Grazie

    
posta Rhys 21.12.2014 - 10:09
fonte

1 risposta

12

Il linguaggio Java ha un sacco di bagaglio storico. In Java, tutto è un oggetto, con l'eccezione di tipi primitivi come int o byte che rappresentano tipi di valore simili a C. Mentre questi primitivi sono generalmente più efficienti, hanno alcune restrizioni importanti:

  • Non puoi chiamare metodi su non oggetti. Esiste una tecnica del compilatore chiamata "autoboxing" che avvolge in modo trasparente le primitive in un oggetto completo per consentire ai metodi di essere richiamati su di essi. In Java, l'autoboxing viene eseguito ogni volta che una primitiva viene assegnata o trasferita al tipo di oggetto corrispondente, ad es. quando assegnato a una variabile o utilizzato come parametro del metodo.

  • I parametri di tipo per generici devono essere oggetti a causa di limiti Java storici. Non puoi avere ArrayList<byte> ma devi utilizzare ArrayList<Byte> : i parametri di tipo esistono solo durante la compilazione ai fini del controllo di tipo statico, mentre sono trattati come Object durante il runtime. Altri linguaggi come C ++ o C # non hanno usato questo design e possono anche parametrizzare su tipi primitivi.

Quindi, mentre byte è la rappresentazione efficiente di un byte, la classe wrapper Byte contiene tutto il sovraccarico necessario per i metodi da chiamare e il valore da utilizzare come oggetto regolare.

    
risposta data 21.12.2014 - 10:26
fonte

Leggi altre domande sui tag