Perché esiste un tipo primitivo per intero (int) anche se abbiamo un numero intero come intero? Ma lo stesso non è con il tipo String. Non esiste un tipo così primitivo per String. Sempre String si occupa del riferimento all'oggetto?Numero intero come tipo primitivo
risposta
Velocità. È molto più veloce per il codice macchina aggiungere due int utilizzando le istruzioni della CPU nativa, piuttosto che dover prendere due oggetti Integer, estrarre i valori int da essi, quindi aggiungerli, creando un nuovo oggetto intero risultato per contenere il risultato. (how JNI maps primitives)
Le stringhe sono complesse, hanno molti metodi e come tali non hanno contrappunti di codice macchina. Sono promossi a un vero oggetto. Inoltre, una stringa condivide lo stato con altre stringhe create con lo stesso valore. Nessun valore primitivo condivide lo stato con altri valori primitivi come questo. (immutable can be shared | primitive no sharing)
Un tipo di dati stringa è notevolmente più complesso di un int - c'è una quantità variabile di memoria per contenere una stringa per una cosa.
Questo perché i processori (CPU) hanno il supporto diretto per i tipi interi ma non per le stringhe. E per motivi di performance Java supporta alcuni tipi nativi che potrebbero essere supportati dai processori su cui JVM potrebbe essere eseguito.
Ultimamente i calcoli vengono eseguiti a livello macchina. Mi chiedo cosa faccia la differenza tra i primitivi e gli oggetti in termini di prestazioni. La risposta elaborata sarà apprezzata.
questo dovrebbe essere un commento - non una "risposta" si prega di competere il tour SO qui: http://stackoverflow.com/tour –
- 1. Oggetto o tipo primitivo
- 2. Blocco su un tipo primitivo
- 3. Come rappresentare un numero intero superiore a un numero intero
- 4. Come verificare se il tipo è primitivo
- 5. Come si converte un numero intero in un tipo enumerato?
- 6. convertire il vettore di tipo primitivo C++ nell'array primitivo di tipo java
- 7. Come memorizzare un numero intero (10 cifre) intero?
- 8. Numero intero fuori intervallo
- 9. Perché `str` è un tipo primitivo?
- 10. intero problema tipo colato
- 11. Numero intero o numero decimale
- 12. Iniezione di un tipo primitivo in AngularJS
- 13. Numero intero Javascript
- 14. Impossibile richiamare toString() sul tipo primitivo int
- 15. universale Parse tipo primitivo su C#
- 16. Java: copia array di tipo non primitivo
- 17. Spostare semantica e di tipo primitivo
- 18. Arrotondare un numero intero al numero intero più vicino
- 19. Come convertire un numero intero in serie
- 20. Java Double vs double: tipo classe vs tipo primitivo
- 21. Tipo di input per modulo HTML per numero intero
- 22. Quale tipo di dati è un numero intero in #define?
- 23. Python SHA1 Numero intero
- 24. Convalida numero intero utilizzando JSR303
- 25. Numero intero continuo eseguito
- 26. C++ numero intero funzione
- 27. Come determinare il tipo primitivo di una variabile primitiva?
- 28. Android: non può invocare toString() sul tipo int primitivo
- 29. Come determinare a livello intero numero intero/min in C?
- 30. VB2010 Come capire se un numero è un intero intero
Vorrei anche aggiungere spazio. Meno spazio per memorizzare un intero in memoria, rispetto a un intero oggetto con tutte le sue operazioni. – Alex