java - Aide : analysez le code suivant en détail, je suis confus.
阿神
阿神 2017-05-17 09:59:16
0
3
723

classe publique T1 {

public static void rename(String aa){
    
    aa="AA";
    
}

public static void main(String args[ ]){
    
    String aa="BB";
    
    rename(aa);

    System.out.println(aa);
}

}
Ma compréhension :
aa dans la méthode rename est dans la mémoire de la pile, et aa dans la méthode principale est dans la mémoire du tas L'exécution de la méthode rename ne modifiera pas la valeur de aa dans la méthode principale, est-ce vrai ?

阿神
阿神

闭关修行中......

répondre à tous(3)
迷茫

L'appel par valeur est la stratégie d'évaluation la plus couramment utilisée : les paramètres formels d'une fonction sont des copies des paramètres réels transmis lors de l'appel. La modification de la valeur du paramètre formel n'affecte pas le paramètre réel.

Lorsqu'ils sont appelés par référence, les paramètres formels de la fonction reçoivent des références implicites aux paramètres réels, plutôt que des copies. Cela signifie que si les valeurs des paramètres de fonction sont modifiées, les paramètres réels seront également modifiés. En même temps, les deux indiquent la même valeur.

La technologie de base Java (I) a mentionné que Java est entièrement transmis par valeur. Tout d'abord, pour les types de base, les fonctions ne peuvent pas modifier sa valeur. Pour les types référence, les fonctions ne peuvent pas la modifier pour pointer vers un autre objet. Donc tout est transmis par valeur.

Ty80

Non, le aa à l'intérieur de la fonction pointe vers la nouvelle adresse, et le aa externe pointe toujours vers l'adresse de "BB", donc le résultat est BB

伊谢尔伦

La fonction ne transmet pas l'AA dans la fonction MAIN lors du passage de la valeur, mais fait une copie de la valeur de AA puis la transmet

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal