Home  >  Article  >  Java  >  Analysis of the difference between passing by value and passing by reference in Java (with code)

Analysis of the difference between passing by value and passing by reference in Java (with code)

不言
不言Original
2018-08-21 14:15:061993browse

The content of this article is about the analysis of the difference between value passing and reference passing (address passing) in Java (with code). It has certain reference value. Friends in need can refer to it. I hope It will help you.

Value passing (pass by value) refers to passing the actual parameters # when calling a function ##Copy Pass a copy to the function, so that if the parameters are modified in the function, the actual parameters will not be affected. The transferred objects are often basic data structures such as integer floating point and character types.

public class PassByValueReference {
	//值传递
	public static void main(String[] args) {
		int x = 9;
		pass(x);
		System.out.println(x);
	}
	
	private static void pass(int y) {
		System.out.println(y);
		y=0;
	}
}

The following is the running result: (The change in the value of integer y does not affect the value of integer x)

Pass by reference (pass by reference) refers to passing the address of the actual parameters directly to the function when calling the function , then the modifications made to the parameters in the function will affect the actual parameters. (Similar to a community) The transferred object is often an address data structure such as an array.

public class PassByValueReference {
        //引用传递
	public static void main(String[] args) {
		int [] x = {9};
                System.out.println(x[0]);
		pass(x);
		System.out.println(x[0]);
	}
	
	public static void pass(int [] y) {
		y[0] = 0;
	}
}

The following is the running result: (The value change of array y also affects the value of array x)

(Value transfer and reference transfer are in The knowledge of stacks and heaps is used in computer data structures)

In addition, if you have not yet come into contact with the knowledge of functions and methods in Java, you can simply use assignment to understand: (The running results are similar to the above)

public class PassByValueReference {
	//值传递(赋值非函方式)
	public static void main(String[] args) {
	    int x = 9;
            System.out.println(x);
	    y = x;
            y = 10;
	    System.out.println(x);
	}
}

Here x and y are basic data types. After assignment, the value of x is passed to y, which is equivalent to making a copy, instead of giving the entire x (i.e., x address) to y.

public class PassByValueReference {
        //引用传递(赋值非函方式)
        public static void main(String[] args) {
		int [] x = {1};
		System.out.println(x[0]);
		int [] y = x;
		y[0] = 0;
		System.out.println(x[0]);
	}
}

Here x and y are arrays. This time the code does not simply set x[0]=y[0], but directly sets x=y. This assignment statement changes the array address of x. Given y, it is equivalent to being in the "same boat" and changing together. When y[0] changes, x[0] also changes.

Related recommendations:

Detailed explanation of Java value passing and reference passing

java software engineer learns php -13. Value passing Passing by reference

The above is the detailed content of Analysis of the difference between passing by value and passing by reference in Java (with code). For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn