J'ai récemment lu le didacticiel Java 300 de Gao Qi, et il contenait une ligne de code que le professeur Gao a brièvement expliqué, mais en y regardant de plus près, j'ai senti que je ne comprenais pas les points de connaissance qu'il contenait. Le code est le suivant. :
public class Test063 {
public static void main(String[] args){
Integer i = Integer.parseInt("234");
System.out.println(i);
}
}
La deuxième phrase Interger.parseInt("234") J'ai vérifié le code source,
Il est clairement indiqué ci-dessus que la méthode parseInt renvoie une valeur de type int, mais comment peut-elle être directement affectée à un objet Integer ?
J'ai fait une autre expérience
Integer a = 1;//报错
Integer b = Integer.parseInt("1");//编译通过
Le résultat m'a rendu très confus, pourquoi cela se produit-il ?
Débutant, aidez-moi à résoudre mes doutes !
Je suis nouveau pour vous, quelle version de JDK avez-vous ? J'ai écrit Integer i = 1; sur mon IDE et ce n'est pas un problème. Je l'ai récemment mis à jour vers JDK8, mais je pense que JDK7 devrait également convenir. Je ne connais pas la version précédente. Quelles sont les limitations de l'autoboxing. Pourquoi n'essayez-vous pas de mettre à niveau ?
Après JDK 1.5, il existe une fonctionnalité d'empaquetage et de décompression automatique, qui convertira automatiquement ce type de données primitif et son type d'objet :
.https://docs.oracle.com/javas...
Après JDK1.5, le boxing et le unboxing automatiques sont possibles
Le code de l'enseignant est un processus de boxe automatique et Integer est la classe d'empaquetage de int. Votre version JDK devrait être relativement ancienne.