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

java - Aide : analysez le code suivant en détail, je suis confus.

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 ?

阿神阿神2685 Il y a quelques jours659

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

  • 迷茫

    迷茫2017-05-17 10:01:16

    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.

    répondre
    0
  • PHP中文网

    PHP中文网2017-05-17 10:01:16

    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

    répondre
    0
  • 伊谢尔伦

    伊谢尔伦2017-05-17 10:01:16

    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

    répondre
    0
  • Annulerrépondre