Home  >  Article  >  Web Front-end  >  Detailed introduction to Java's call by value and call by reference

Detailed introduction to Java's call by value and call by reference

不言
不言forward
2019-03-16 10:41:343705browse

This article brings you a detailed introduction to Java’s call by value and call by reference. It has certain reference value. Friends in need can refer to it. I hope it will be helpful to you. Helps.

The topic is as follows:

Detailed introduction to Javas call by value and call by reference

Two ways to pass parameters in Java

  1. call by value (value transfer): passed Is a value (for basic data types), such as passing an integer value. In fact, in a method call method passed by value, the parameters are just a copy of the actual parameters.
  2. Call by reference: What is passed is a reference to the object (for the object), that is, what is passed is the address of the object. In fact, when a reference is passed, a new copy of the reference will be generated, and both the old and new references point to the same address.

Code example

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]

Then we can draw the conclusion:

  1. call by value will not change the value of the actual parameter
  2. call by reference cannot change the reference address of the actual parameter
  3. call by reference can change the content of the actual parameter

Then the answer to this question is this.

The above is the detailed content of Detailed introduction to Java's call by value and call by reference. For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:segmentfault.com. If there is any infringement, please contact admin@php.cn delete