14.Java Basics - Parameter Passing
Feb 27, 2017 am 10:55 AMBasic concepts
In Java, there are two parameter passing mechanisms: passing by value and passing by address.
When a basic type is passed as a parameter, it is a copy of the passed value. No matter how you change this copy, the original value will not change; it is a pass-by-value.
Passing an object as a parameter copies a copy of the object's address in memory and passes it to the parameter; it is a pass-by-address.
Example study
1. Basic types are passed as parameters
public static void main(String[] args) { int n =3; // ① System.out.println(n); // 3 chageData(n); // ② System.out.println(n); // 3}public static void chageData(int num){ num = 10; // ③}
Observation Output the results and find that the value of n has not changed.
Because n and num are basic types, the values are directly stored in variables.
The flow chart is as follows (corresponding to ①②③ in the code):
2. Objects are passed as parameters
First look at the String example:
public static void main(String[] args) { String str = "hello"; // ① System.out.println(str); // hello chageData(str); //② System.out.println(str); // hello}public static void chageData(String s){ s ="world"; // ③}
Observe the results and find that str has not changed. Here is an analysis based on the flow chart:
After ① is executed, an object reference str will be generated in the heap, which contains the address index, which points to the memory. The real String object
generates the object reference s in ②. Through the pass-by reference, it also gets the address index of "hello".
In ③ reassign the object reference s. It stands to reason that the value of the object should be from "hello" -> "world". But it creates a new object because of the immutability of String, because a new object is created once String changes.
Let’s look at the StringBuffer example again:
public static void main(String[] args) { StringBuffer stb = new StringBuffer("hello"); // ① System.out.println(stb); // hello chageData(stb); // ② System.out.println(stb); // hello world}public static void chageData(StringBuffer s){ s.append("world"); // ③} }
Observe the results and find that stb has changed because the StringBuffer object is Variable, changing its content will not create a new object
The above is the content of 14.Java Basics - Parameter Passing, for more related content, please pay attention to PHP Chinese Net (www.php.cn)!

Hot Article

Hot tools Tags

Hot Article

Hot Article Tags

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

Break or return from Java 8 stream forEach?
