public class Test1 { public static void main(String[] args) { Student student = null; test(student); if(student == null) { System.out.println("学生对象为空!"); }else { System.out.println("学生对象不为空!"); } } private static void test(Student student) { student = new Student(); } }
输出结果:
问题:原本我以为在test方法里面重新赋值对象,在main方法的里面的student也是有对象的。但是实际上会为空。
这部分内容设计到JAVA的方法区的知识。
从上图可知,main方法栈区的student变量,并不会指向堆区的对象
参考文章:
(3条消息) 传参接收对象取不到值_多图证明,Java到底是值传递还是引用传递?_d.Scorpio94的博客-CSDN博客