public class A {
private int k;
public A(int k) {
this.k = k;
}
public int getK() {
return k;
}
}
public class B {
//a对象作为函数中的临时变量什么时候被销毁?
public A function1(){
A a = new A(3);
return a;
//返回了a,不会被销毁
}
}
public class Main {
public static void main(String[] args) {
B b= new B();
A aa = b.function1();
System.out.println(aa.getK());
}
}
能正确打印出aa的k值
Java中的基本数据类型变量和对象的名称引用变量如定义在方法中,都为局部变量。但对象本身不一定是局部生命周期。如函数外存在其他对该对象的引用变量,则该对象的生命周期延伸至该其他引用变量所在的块。
如从被调用函数参数引用传值或返回值到主调用函数所在的对象类型变量中,则该对象都仍存在(但被调用函数的该对象的引用变量生命周期结束,因此引用变量是局部变量),此时对象突破了局部变量的局部生命期。