Maison  >  Article  >  interface Web  >  Introduction détaillée à l'appel par valeur et à l'appel par référence de Java

Introduction détaillée à l'appel par valeur et à l'appel par référence de Java

不言
不言avant
2019-03-16 10:41:343705parcourir

Cet article vous apporte une introduction détaillée à l'appel par valeur et à l'appel par référence de Java. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. .

Le sujet est le suivant :

Introduction détaillée à lappel par valeur et à lappel par référence de Java

Deux façons de passer des paramètres en Java

  1. appel par valeur (transfert de valeur) : passé Est la valeur (pour les types de données de base), par exemple en passant une valeur entière. En fait, dans une méthode d'appel de méthode passée par valeur, les paramètres ne sont qu'une copie des paramètres réels.
  2. Appel par référence : ce qui est passé est une référence à l'objet (pour l'objet), c'est-à-dire que ce qui est passé est l'adresse de l'objet. En fait, lorsqu'une référence est passée, une nouvelle copie de la référence sera générée, et l'ancienne et la nouvelle référence pointeront vers la même adresse.

Exemple de code

public class TestJavaCallBy {

    // 测试值传递
    public static void testCallByValue(int value) {
        value *= 10;
    }

    // 测试引用传递
    public static void testCallByReference(StringBuilder sb) {
        sb.append(" - " + ZonedDateTime.now());
    }

    public static void main(String[] args) {

        // 测试值变量
        int param = 1;
        // 测试引用对象
        StringBuilder sb = new StringBuilder("666");

        // 测试
        System.out.println(param);
        testCallByValue(param);
        System.out.println(param);

        System.out.println(sb.toString());
        testCallByReference(sb);
        System.out.println(sb.toString());
    }
}

控制台输出结果
1
// 结果仍为1,因为参数传递的是实参的一份拷贝,对实参不造成影响
1 

666
// 传递的是引用的拷贝,新旧两个引用指向同一个对象(地址),因此append操作是作用在该对象上
666 - 2019-03-16T01:25:57.933038500+08:00[Asia/Shanghai]

Ensuite, nous pouvons tirer la conclusion :

  1. l'appel par valeur ne changera pas la valeur du paramètre réel
  2. L'appel par référence ne peut pas changer l'adresse de référence du paramètre réel
  3. L'appel par référence peut modifier le contenu du paramètre réel

Alors la réponse à cette question est la suivante .

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer