Maison  >  Questions et réponses  >  le corps du texte

java new对象 User user; 和 User user = null; 有什么区别

User user;

User user = null;
这两种写法有什么区别呢?

PHP中文网PHP中文网2741 Il y a quelques jours712

répondre à tous(5)je répondrai

  • PHP中文网

    PHP中文网2017-04-18 10:34:27

    Cela dépend de l'endroit où User user; apparaît, commençons par la conclusion :

    1. S'il s'agit d'un attribut (champ) d'un objet, il n'y a pas de différence entre les deux méthodes d'écriture.

    2. S'il s'agit d'une variable locale dans une méthode, s'il n'y a pas d'autre endroit dans la méthode pour attribuer une valeur à l'utilisateur, une erreur de compilation se produira.

    S'il s'agit d'un attribut d'un objet, le compilateur Java attribuera automatiquement une valeur initiale au champ lors de la compilation (le type d'origine est la valeur par défaut ; le type de référence est nul). Par exemple, le code suivant :

    public class TestInitialization {
        private User userA;
    }

    Après la compilation, utilisez javap pour afficher le bytecode. La partie rouge est le processus par lequel le compilateur attribue automatiquement les valeurs initiales :

    S'il s'agit d'une variable locale dans une méthode, le compilateur n'attribuera pas automatiquement de valeur initiale. User user;La variable user est uniquement définie, mais aucun espace n'est alloué à l'utilisateur dans la mémoire. Elle n'est pas initialisée et ne peut pas être compilée User user = null;Non seulement la variable user est définie, mais l'espace mémoire est également alloué à l'utilisateur, l'utilisateur pointe maintenant vers null.

    那么问题来了`null`又是个什么鬼?
    http://stackoverflow.com/questions/2707322/what-is-null-in-java
    

    répondre
    0
  • 阿神

    阿神2017-04-18 10:34:27

    Si user est une variable locale : l'utilisation de user avant la première affectation (y compris l'initialisation à null) est une erreur de compilation

    Il n'y a aucune différence après l'affectation

    répondre
    0
  • PHPz

    PHPz2017-04-18 10:34:27

    Il semble que ce soit pareil

    répondre
    0
  • PHP中文网

    PHP中文网2017-04-18 10:34:27

    Aucune différence, la valeur d'initialisation par défaut est nulle

    répondre
    0
  • PHPz

    PHPz2017-04-18 10:34:27

    Non= Aucun espace n'est créé pour lui dans la pile. L'ajout de =null spécifie un espace réservé vide

    dans la pile.

    répondre
    0
  • Annulerrépondre