Tipi di dati in Java: tipi di dati primitivi e non primitivi
Pubblicato: 2020-12-01Sommario
introduzione
In qualsiasi linguaggio di programmazione, un tipo di dati è un attributo di dati che consente al computer o al compilatore di sapere come i programmatori vogliono assegnare i dati. Un tipo di dati aggiunge una restrizione alle variabili oa una funzione durante l'assegnazione dei valori.
Questi tipi di dati definiscono il comportamento dei dati come il modo in cui i valori di quel tipo possono essere archiviati e le operazioni che possono essere eseguite sui dati. Diamo un'occhiata a tutti i tipi di dati forniti da java.
Tipi di dati primitivi
Un tipo di dati primitivo non può essere ulteriormente suddiviso in un tipo di dati più semplice. Java fornisce 8 tipi di dati primitivi, esploriamoli!
Byte
Un byte è un tipo intero che memorizza numeri interi compresi tra -128 e 127, questo elimina i problemi di vincolo di memoria se si tratta di numeri piccoli poiché richiede solo 1 byte di memoria. Una variabile byte può essere dichiarata utilizzando la parola chiave "byte". L'assegnazione di un valore superiore a 127 a un byte genera un errore di "tipi incompatibili".
| byte n1 = 98 ; Sistema . fuori . println(n1); |
Il frammento di cui sopra stampa 98 come previsto.
Corto
Un breve è un tipo intero che memorizza numeri interi compresi tra -32768 e 32767, consuma 2 byte di memoria dal disco. Una variabile breve può essere dichiarata utilizzando la parola chiave "short". L'assegnazione di un valore maggiore di 32767 a una variabile breve genera un errore di "tipi incompatibili".

| breve n1 = 9876 ; Sistema . fuori . println(n1); |
Il frammento di codice sopra stampa 9876 come output.
int
Un int è un tipo intero che memorizza numeri interi compresi tra -2147483648 e 2147483647, consuma 4 byte di memoria nel disco. In genere, i programmatori preferiscono utilizzare un int per dichiarare una variabile che memorizza valori numerici. Il compilatore Java genera un errore di "tipi incompatibili" se si tenta di assegnare un valore maggiore dell'intervallo.
| int n1 = 987654 ; Sistema . fuori . println(n1); |
Il frammento di codice sopra stampa 987654 come output.
Lungo
Ora, questo è un tipo di dati interessante che consuma 8 byte di memoria nel disco. È un tipo intero che memorizza numeri interi che vanno da -9223372036854775808 a 9223372036854775807, phew che richiede una notevole quantità di tempo per leggere quell'intervallo.
Viene utilizzato quando il tipo di dati int va in overflow per le operazioni che eseguiamo. Ricorda che dobbiamo terminare il valore con una "L" durante l'assegnazione.
| lungo n1 = 987654321098765L ; Sistema . fuori . println(n1); |
Il frammento di cui sopra stampa 987654321098765, come previsto.
Galleggiante
Float è un tipo di dati a virgola mobile, il che significa che può memorizzare i valori inclusa la loro precisione decimale. Supponiamo che tu abbia sviluppato un codice per annotare tutte le tue spese, ma sei piuttosto severo e vuoi tenere traccia di ogni centesimo speso. In tal caso, int non funzionerà perché int può memorizzare solo numeri interi.
Abbiamo bisogno di un tipo di dati a virgola mobile per questa attività. Un float può memorizzare i numeri frazionari che vanno da 3.4e-038 a 3.4e+038, può memorizzare fino a 7 cifre di precisione decimale. Ricorda che dovresti terminare il valore con una "f".
| float n = 98,76f ; Sistema . fuori . println(n); |
Il frammento di codice sopra stampa 98,76 come output.
Leggi: Proprietà e vantaggi di JavaBeans: come dovresti utilizzare?
Doppio
Double è simile a float, ma come dice il nome è il doppio del float nel caso della precisione decimale. Può avere una precisione decimale di 15 cifre e può memorizzare numeri frazionari che vanno da 1.7e-308 a 1.7e+308. Ricorda che devi terminare il valore con una "d".
Esaminiamo un codice per capire la differenza tra float e double.
| prova di classe pubblica { public static void main ( String args[]) { float a1 = 1.f / 70 ; galleggiante b1 = 0 ; doppio a2 = 1.d / 70 ; doppio b2 = 0 ; galleggiante f1 = 1f ; doppio f2 = 1d ; for ( int i = 0 ;i < 490 ;i ++ ){ b1 = b1 + a1; b2 = b2 + a2; se (io > 1 && io <= 50 ){ f1 = f1 * io; f2 = f2 * io; } } Sistema . fuori . println(b1); //Linea 1 Sistema . fuori . println(b2); //linea 2 Sistema . fuori . println(f1); //linea3 Sistema . fuori . println(f2); //riga4 } } |
Il calcolo a portata di mano dell'espressione "(1/70)*490" ci dà 7 come risposta, ma eseguirlo in Java usando float e double dà una risposta diversa. Nello snippet sopra, una variabile float e una doppia variabile vengono inizializzate con 1/70 e l'aggiunta di questo valore a un'altra variabile 490 volte dovrebbe darci 7 come risposta.

Eseguendo lo snippet sopra, la riga 1 stampa 6.9999795 che ha una precisione decimale di 7 cifre, mentre la riga 2 stampa 6.9999999999999978 che ha una precisione decimale di 15 cifre. Quindi, se float non ti fornisce una precisione decimale accurata, puoi optare per il doppio. Inoltre, è più probabile che un float raggiunga l'infinito poiché l'intervallo di float è inferiore rispetto al doppio.
Ad esempio, se memorizzi il fattoriale di un numero considerevolmente grande, quella variabile raggiunge l'infinito. Dal frammento di cui sopra, possiamo vedere che ci sono due variabili utilizzate per memorizzare il fattoriale di 50 e al momento in cui stampiamo il risultato, la riga 3 stampa l'infinito e la riga 4 stampa 3.0414093201713376E64, quindi se float non soddisfa il tuo numero range quindi puoi optare per il doppio.
Sia float che double possono essere usati come numeri scientifici con una "e", dove "e" indica la potenza di 10. Ad esempio, 3e2f equivale a 300.0 nel tipo di dati float e 3e4d equivale a 30000.0 nel tipo di dati double.
booleano
Un tipo di dati booleano può assumere solo due valori true e false, viene dichiarato utilizzando la parola chiave boolean in java. Questo tipo di dati viene generalmente utilizzato come variabile flag per tenere traccia delle modifiche apportate a un codice. Ad esempio, impostando il flag su true se un numero è divisibile per 2 altrimenti false.
| flag booleano = vero ; booleano b1 = falso ; Sistema . fuori . println(bandiera); //stampa vero Sistema . fuori . println(b1); //stampa falsa |
Char
Un tipo di dati char viene utilizzato per memorizzare un singolo carattere, questo tipo di dati può essere dichiarato utilizzando la parola chiave char. Ricorda che dobbiamo racchiudere il carattere tra virgolette singole durante l'assegnazione, può memorizzare sia caratteri minuscoli che maiuscoli in un tipo di dati char.
La memorizzazione di più di un carattere in un tipo di dati char genera un errore. Inoltre, c'è un fatto divertente per quanto riguarda il tipo di dati char che è che il typecasting di un char in un intero memorizza il valore ASCII di quel carattere e viceversa è anche vero.
| carattere c1 = ' un ' ; carattere c2 = 66 ; Sistema . fuori . println(c1); //Linea 1 Sistema . fuori . println(c2); //linea 2 Sistema . fuori . println(( int )c1); //linea3 |
Nella riga di snippet sopra 1, stampa 'a' come output che è come previsto. La riga 2 stampa 'B' come output poiché 66 si riferisce a B nella tabella ASCII. La riga 3 stampa 97 come output poiché è il valore ASCII di 'a'.
Ma cosa succede se vogliamo memorizzare più di un personaggio? Ci occuperemo di loro nei prossimi paragrafi.
Leggi anche: 17 interessanti idee e argomenti di progetti Java per principianti
Tipi di dati non primitivi
I tipi di dati non primitivi in Java sono anche chiamati tipi di riferimento perché si riferiscono a oggetti. I tipi di dati non primitivi vengono creati dal programmatore e non sono predefiniti. Poiché i non primitivi sono indicati come oggetti, possono essere assegnati con null, il che non è un caso nel tipo primitivo.
A differenza dei tipi di dati primitivi, un tipo di dati non primitivo deve iniziare con una lettera maiuscola. Tutti i tipi di dati non primitivi hanno le stesse dimensioni e consumano la stessa memoria su disco, il che è diverso nel caso di tipi di dati primitivi.
Corda
Una stringa è un tipo di dati speciale in Java, dove contraddice il fatto che i tipi non primitivi sono definiti dai programmatori. Il tipo di dati stringa è un tipo di dati non primitivo ma è predefinito in java, alcune persone lo chiamano anche un nono tipo di dati primitivo speciale.
Questo risolve il caso in cui un carattere non può memorizzare più caratteri, un tipo di dati stringa viene utilizzato per memorizzare la sequenza di caratteri. Ricorda che devi racchiudere la sequenza di testo tra virgolette.
| Stringa s1 = " Hey There " ; Sistema . fuori . println(s1); |
Il frammento di cui sopra stamperà "Hey There" come previsto.
Array, Classi, Interfacce, ecc. Sono pochi altri tipi di dati non primitivi in Java.
Come calcolare l'intervallo di tipi di dati?
Dopo aver osservato gli intervalli di tipi di dati primitivi, potresti avere il dubbio che dobbiamo ricordarlo? Ebbene, la risposta sarebbe NO. Ma dobbiamo ricordare la dimensione di ciascun tipo di dati e quindi possiamo calcolare l'intervallo di quel tipo di dati.
Ad esempio, un tipo di dati byte consuma 1 byte di memoria su disco. A livello di compilatore, tutti i dati sono memorizzati sotto forma di bit e un byte ha 8 bit. Ora uno degli 8 bit viene utilizzato per specificare il segno del numero e i restanti 7 bit possono memorizzare il numero effettivo, quindi il numero massimo che possiamo memorizzare utilizzando 7 bit è 128.
Quindi, -128 è il limite inferiore del tipo di dati byte e +127 è il limite superiore perché zero è il primo numero sulla riga dei numeri dopo i numeri negativi.
Allo stesso modo nei tipi a virgola mobile, i dati sono suddivisi in 3 parti con segno di bit, mantissa ed esponente. La parte Mantissa viene utilizzata per memorizzare la precisione decimale, un float ha 23 bit di mantissa più un bit nascosto e un double ha 52 bit di mantissa più un bit nascosto.
Per float, log(2^24)/log(10) che è approssimativamente uguale a 7, quindi una precisione decimale di 7 cifre.
Per double, log(2^53)/log(10) che è approssimativamente uguale a 15, quindi una precisione decimale di 15 cifre.

Iscriviti ai corsi di ingegneria del software dalle migliori università del mondo. Guadagna programmi Executive PG, programmi di certificazione avanzati o programmi di master per accelerare la tua carriera.
Conclusione
Abbiamo visto vari tipi di dati in Java, compreso i tipi di dati primitivi e non primitivi, la differenza tra primitivi e non primitivi. Sono stati esaminati frammenti di codice di esempio per avere una conoscenza di base della dichiarazione dei tipi di dati.
Capire come calcolare l'intervallo di vari tipi di dati di tipi di dati interi, come calcolare la precisione decimale di tipi di dati a virgola mobile.
Ora che sei a conoscenza di vari tipi di dati in Java, inizia a esplorarli!
Se sei interessato a saperne di più su Java, OOP e lo sviluppo di software full-stack, dai un'occhiata al programma Executive PG di upGrad e IIIT-B in Full-stack Software Development, progettato per i professionisti che lavorano e offre oltre 500 ore di formazione rigorosa, Oltre 9 progetti e incarichi, stato di Alumni IIIT-B, progetti pratici pratici e assistenza sul lavoro con le migliori aziende.

