2012-06-16 11 views
5

Eventuali duplicati:
Why can Integer and int be used interchangably?Perché java ha un tipo di dati intero int e int e posso spostare i dati da uno all'altro?

Sto cercando di capire la differenza tra questi. Posso dichiarare qualcosa come un int per esempio e poi confrontarlo con un numero che ho inserito in un intero? Anche perché Java ha il due. Perché non solo combinarli?

Qualcuno può aiutarmi mostrandomi un codice di 3-4 righe di esempio di come viene utilizzato?

+1

Intendi classe Integer? – taskinoor

+0

Esatto, java ha un tipo primitivo int e una classe "Integer"! La classe ha routine ecc ..., il tipo primitivo è proprio questo, primitivo !!! – trumpetlicks

+0

I tipi primitivi sono più veloci, ma non agiscono come oggetti di classe. –

risposta

5

int primitivo non è un oggetto. Gli array consentono primiteves:

int[] array = new int[10]; 

ma generici non fanno:

List<int> //won't compile 

Questo è il motivo principale per utilizzare le classi wrapper in questi giorni. Inoltre è possibile utilizzare Integer dove è previsto Object. Infine, il Integer può avere il valore null se si desidera implementare l'opzionalità.

Si noti che ci sono alcune lingue che hanno affrontato tale incoerenza. In avete tipi di valore, in Intclasse estendono dalla AnyVal classe mentre gli oggetti normali si estendono AnyRef (entrambi questi si estendono dalla Any).

1

int è un primitivo, Integer è una classe. Non si può dire ArrayList<int> ma si può dire ArrayList<Integer>.

2

Vedere boxing di tipi in Java. Si parla di renderli esattamente uguali a partire da Java 9.

1

Tutti i tipi primitivi in ​​Java hanno le loro controparti di classe (classi discendenti da Object), ad esempio Booleano, Lungo ecc. Si chiama "boxing". Spiegazione vedi ad esempio here.

2
  • Primitive int tipo e Integer classe sono diversi tipi. Non è possibile confrontare direttamente un primitivo int con un oggetto Integer. È necessario ottenere intValue dall'oggetto Integer.
  • Sì, questa è una funzionalità richiesta. Java e alcuni altri linguaggi hanno questi tipi di wrapper di oggetti per i tipi primitivi per gestire le situazioni in cui è richiesto un oggetto. Ad esempio, una classe di raccolta si aspetta oggetti, non è possibile utilizzare la primitiva int con essi. Quindi avrai bisogno di un wrapper Integer.
2

Integer è un oggetto, mentre int è un tipo primitivo. Fondamentalmente, gli oggetti vengono passati per riferimento, mentre i primitivi vengono passati per valore. Inoltre differiscono da dove sono assegnati.

In termini di Java, un oggetto ha funzioni.Chiamare qualcosa come:

Integer.toString() 

va bene, ma:

int.toString() 

non è.

+0

Tutto in java è passato per valore. Sia primitivi che oggetti allo stesso modo. Java capita di memorizzare internamente gli oggetti come puntatori, quindi il valore di un oggetto è un puntatore. In effetti, le specifiche del linguaggio Java specificano specificamente che tutti i parametri del metodo sono passati per valore. Tuttavia, le persone spesso lo scambiano per passaggio per riferimento perché puoi chiamare un metodo che cambia campi e il chiamante lo vede. Questo non ha nulla a che fare con il passaggio per riferimento. – Matt

Problemi correlati