JAVA 参数传递

import java.util.Scanner;
//值传递  (传递的是值的拷贝,也就是说传递后就互不相关了。)
public class Main {
    void test1(int a) {
        a = 4;
        System.out.println("test1 a:" + a);
    }

    public static void main(String[] args) {
        Main ma = new Main();
        int a = 2;
        ma.test1(a);
        System.out.println("main a: " + a);

    }

}
test1 a:4
main a: 2

 

import java.util.Scanner;
//引用传递 (传递的引用的地址,也就是变量所对应的内存空间的地址。)
//传递前和传递后都指向同一个引用(也就是同一个内存空间)。
class A {
    public int age = 0;
}

public class Main {

    void test1(A a) {
        a.age = 20;
        System.out.println("test1 age:" + a.age);
    }

    public static void main(String[] args) {
        Main ma = new Main();
        A a = new A();
        a.age = 10;
        ma.test1(a);
        System.out.println("main age: " + a.age);

    }

}
test1 age:20
main age: 20

 

 

import java.util.Scanner;

class A {
    public int age = 0;
}

public class Main {

    void test1(A a) {
        a = new A();
        a.age = 20;
        System.out.println("test1 age:" + a.age);
    }

    public static void main(String[] args) {
        Main ma = new Main();
        A a = new A();
        a.age = 10;
        ma.test1(a);
        System.out.println("main age: " + a.age);

    }

}
test1 age:20
main age: 10

 

内存分配示意图

 

JAVA 参数传递

 

 

 JAVA 参数传递

 

 

 JAVA 参数传递

 

 

 JAVA 参数传递

 

 

 JAVA 参数传递

 

 

 

 

 

test1 age:20
main age: 10

(1):“在Java里面参数传递都是按值传递”这句话的意思是:按值传递是传递的值的拷贝,按引用传递其实传递的是引用的地址值,所以统称按值传递。

(2):在Java里面只有基本类型和按照下面这种定义方式的String是按值传递,其它的都是按引用传递。就是直接使用双引号定义字符串方式:String str = “Java私塾”;

 
上一篇:闲谈:java中的值传递和引用传递有什么区别?


下一篇:java 实现9*9乘法表