Home  >  Article  >  Java  >  14.Java Basics - Parameter Passing

14.Java Basics - Parameter Passing

黄舟
黄舟Original
2017-02-27 10:55:091047browse

Basic 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):

14.Java Basics - Parameter Passing


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.

14.Java Basics - Parameter Passing


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

14.Java Basics - Parameter Passing

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)!


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