Domanda

Così sto imparando java, e ho una domanda.Sembra che i tipi int, boolean e string sarà un bene per quasi tutto quello che avrete mai bisogno in termini di variabili, ad eccezione forse di float potrebbe essere utilizzato quando i numeri decimali sono necessari in un numero.

La mia domanda è, sono gli altri tipi di long, double, byte, char ecc mai usato in normali di tutti i giorni di programmazione?Che cosa sono alcune cose pratiche, questi potrebbero essere utilizzati per?Che cosa sono per?

È stato utile?

Soluzione

Con la possibile eccezione di " short " ;, che probabilmente è un po 'uno spreco di spazio - a volte letteralmente, sono tutti cavalli per i corsi:

  • Usa un int quando non hai bisogno di numeri frazionari e non hai motivo di usare nient'altro; sulla maggior parte delle configurazioni di processori / SO, questa è la dimensione del numero che la macchina può gestire in modo più efficiente;
  • Usa un doppio quando hai bisogno di numeri frazionari e non hai motivo di usare nient'altro;
  • Usa un carattere quando vuoi rappresentare un personaggio (o possibilmente rari casi in cui hai bisogno di aritmetica senza segno a due byte);
  • Utilizza un byte se devi specificamente manipolare un byte firmato (raro!) o quando devi spostarti in un blocco di byte;
  • Usa un booleano quando hai bisogno di un semplice " sì / no " bandiera;
  • Usa un lungo per quelle occasioni in cui hai bisogno di un numero intero, ma in cui la grandezza potrebbe superare i 2 miliardi (dimensioni del file, misurazioni del tempo in millisecondi / nanosecondi, in usi avanzati per compattare diversi pezzi di dati in un unico numero);
  • Usa un float per quei rari casi in cui (a) stai memorizzando un numero enorme e vale la pena risparmiare memoria, oppure (b) stai eseguendo un numero enorme di calcoli e può permettersi una perdita di precisione. Per la maggior parte delle applicazioni, & Quot; float & Quot; offre una precisione molto scarsa, ma le operazioni possono essere due volte più veloci - vale la pena testarlo sul processore, per scoprire che in realtà è il caso! [*]
  • Usa un short se hai davvero bisogno dell'aritmetica con segno a 2 byte. Non ci sono molti casi ...

[*] Ad esempio, in Hotspot su architetture Pentium, f loat e doppie operazioni in generale impiega esattamente lo stesso tempo , ad eccezione della divisione.

Non impantanarti troppo nell'utilizzo della memoria di questi tipi a meno che tu non veramente lo capisca. Ad esempio:

  • ogni dimensione dell'oggetto viene arrotondata a 16 byte in Hotspot, quindi un oggetto con un campo a byte singolo occuperà esattamente lo stesso spazio di un singolo oggetto con un campo lungo o doppio;
  • quando si passano i parametri a un metodo, ogni tipo occupa 4 o 8 byte nello stack : non si salverà nulla cambiando un parametro di metodo da, diciamo, un int in un breve! (Ho visto persone fare questo ...)

Ovviamente, ci sono alcune chiamate API (ad es. varie chiamate per attività che non richiedono CPU che per qualche motivo prendono float) in cui devi solo passarlo nel tipo che richiede ...!

Nota che String non è un tipo primitivo, quindi non appartiene davvero a questo elenco.

Altri suggerimenti

Un java int è 32 bit, mentre un long è 64 bit, quindi quando devi rappresentare numeri più grandi di 2 ^ 31, long è tuo amico. Per un tipico esempio dell'uso di long, vedere System.currentTimeMillis ()

Un byte è 8 bit, e la più piccola entità indirizzabile sulla maggior parte dell'hardware moderno, quindi è necessario quando si leggono dati binari da un file.

Un double ha una dimensione doppia di un float, quindi di solito dovresti usare un double anziché un float, a meno che tu non abbia alcune restrizioni su dimensioni o velocità e un float abbia una capacità sufficiente.

Un corto è di due byte, 16 bit. A mio avviso, questo è il tipo di dati meno necessario, e non l'ho visto davvero nel codice reale, ma, di nuovo, potrebbe essere utile per leggere formati di file binari o fare protocolli di rete di basso livello. Ad esempio, i numeri di porta ip sono a 16 bit.

Char rappresenta un singolo carattere, che è di 16 bit. Ha le stesse dimensioni di un corto, ma un corto è firmato (da -32768 a 32767) mentre un carattere non è firmato (da 0 a 65535). (Ciò significa che un numero di porta ip è probabilmente rappresentato più correttamente come char che come short, ma questo sembra essere al di fuori dell'ambito previsto per i char ...)

Per la fonte davvero autorevole su questi dettagli, vedere specifica della lingua java .

Si può avere uno sguardo qui circa i tipi primitivi in Java.

L'interesse principale tra questi due tipi sono l'utilizzo della memoria.Per esempio, int utilizza 32 bit mentre byte utilizza solo 8bits.

Immaginate di lavorare sulla struttura di grandi dimensioni (array, matrici...), quindi è meglio prendersi cura del tipo in uso al fine di ridurre l'utilizzo della memoria.

Suppongo che ci siano diversi scopi per tipi di quel tipo:

1) Applicano restrizioni sulla dimensione (e il segno) delle variabili che possono essere memorizzate in esse.

2) Possono aggiungere un po 'di chiarezza al codice (ad es. se usi un carattere, quindi chiunque legga il codice sa cosa intendi memorizzare in esso).

3) Possono risparmiare memoria. se disponi di una vasta gamma di numeri, tutti senza segno e inferiori a 256, puoi dichiararla come una matrice di byte, risparmiando un po 'di memoria rispetto a se hai dichiarato una matrice di ints.

4) Hai bisogno di molto tempo se i numeri che devi memorizzare sono maggiori di 2 ^ 32 e un doppio per numeri in virgola mobile molto grandi.

I tipi di dati primitivi sono richiesti perché sono la base di ogni raccolta complessa.

long, double, byte ecc. vengono utilizzati se è necessario solo un numero intero piccolo (o qualsiasi altra cosa), che non sprechi lo spazio dell'heap.

Lo so, c'è abbastanza RAM ai nostri tempi, ma non dovresti sprecarlo.

Ho bisogno del " quelli piccoli " per operazioni su database e stream.

Numeri interi dovrebbe essere usato per i numeri in generale.
Doppi sono il tipo di dati di base utilizzato per rappresentare i decimali.
Stringhe può contenere essenzialmente qualsiasi tipo di dati, ma è più facile usare gli ints ed è confuso usare la stringa ad eccezione del testo.
I caratteri vengono utilizzati quando si desidera contenere solo una lettera, sebbene siano essenzialmente solo per chiarezza.
Shorts, long e float potrebbero non essere necessari, ma se, ad esempio, si sta creando un array di dimensioni 1,00000 che doveva contenere solo numeri inferiori a 1.000, allora si vorrebbe usare pantaloncini, semplicemente per risparmiare spazio.

È relativo ai dati con cui hai a che fare. Non ha senso utilizzare un tipo di dati che riserva una grande porzione di memoria quando si ha a che fare solo con una piccola quantità di dati. Ad esempio, molti tipi di dati riservano memoria prima ancora di essere utilizzati. Prendendo ad esempio le matrici, riserveranno un importo predefinito (diciamo, 256 byte & Lt; - un esempio!) Anche se ne stai usando solo 4 byte.

Vedi questo link per la tua risposta

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