8大基本数据类型为 值传递
类和数组为 引用传递,传递的是地址
但是要注意虽然类是引用传递,但是要注意,调用方法是新开一个栈
因此如果进行p = null或者 Person p = new Person()等语句,要格外注意:
- 如果主函数再次输出对象p的属性,此时输出的仍是主栈指向的内容
- 如果在调用函数输出对象p的属性,此时输出的是新栈指向的内容
(p在哪调用,就找哪个栈里的p)
代码如下:
//2024.07.08public class MethodExercise03 {public static void main(String[] args) {B b = new B();Person p = new Person();p.name = "liming";p.age = 18;b.test1(p);System.out.print("main:p=18,After executing p.age=100: ");b.print(p);p.age = 18;b.test2(p);System.out.print("main:p=18,After executing p=null: ");b.print(p);p.age = 18;b.test2(p);System.out.print("main:p=18,After executing Person p = new Person(): ");b.print(p);}
}class Person {String name;int age;
}class B {public void print(Person p){System.out.println("name = " + p.name + ", age = " + p.age);}public void test1(Person p){p.age = 100;}public void test2(Person p){p = null;//不抛出exception}public void test3(Person p){p = new Person();}
}
运行截图:
图解说明:
-
test1
-
test2
-
test3