Skip to content

LessTalk/Less_JavaReference

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 

Repository files navigation

JavaReference

首先说两个专业术语

  • 按值调用(call by value)

    • 方法接收的是调用者提供的值
  • 引用调用(call by reference)

    • 方法接收的是调用者提供的变量地址
Java 程序设计语言总是采用按值调用(call by value) 方法得到的是所有参数值的一个拷贝

example 1

public static void main(String[] args) {
    int num1 = 10;
    int num2 = 20;

    swap(num1, num2);

    System.out.println("num1 = " + num1);
    System.out.println("num2 = " + num2);
}

public static void swap(int a, int b) {
    int temp = a;
    a = b;
    b = temp;

    System.out.println("a = " + a);
    System.out.println("b = " + b);
}
Result
a = 20
b = 10
num1 = 10
num2 = 20
Reason
 swap 方法中ab 的值进行交换并不会影响到 num1num2因为ab 中的值只是从 num1num2 的复制过来的也就是说ab 相当于 num1num2 的副本副本的内容无论怎么修改都不会影响到原件本身

example 2

    public static void main(String[] args) {
        int[] arr = { 1, 2, 3, 4, 5 };
        System.out.println(arr[0]);
        change(arr);
        System.out.println(arr[0]);
    }

    public static void change(int[] array) {
        // 将数组的第一个元素变为0
        array[0] = 0;
    }
Result
1
0
Reason
array 被初始化 arr 的拷贝也就是一个对象的引用也就是说 array  arr 指向的是同一个数组对象因此外部对引用对象的改变会反映到所对应的对象上

example 3

    public static void main(String[] args) {
        StringBuffer a = new StringBuffer("A");
        StringBuffer b = new StringBuffer("B");
        operator(a, b);
        System.out.println(a + "," + b);
    }

    static void operator(StringBuffer x, StringBuffer y) {
        x.append(y);
        y = x;
    }
Result
AB
B

example 4

    public static void main(String[] args) {
        Integer var1 = new Integer(1);
        Integer var2 = var1;
        doSomething(var2);
        System.out.print(var1.intValue());
        System.out.print(var1 == var2);
    }

    public static void doSomething(Integer integer) {
        integer = new Integer(2);
    }
Result
1
true

About

关于Java引用中的一些理解

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors