final修饰方法的形参是存在常量池么?在内存中的生命周期是怎么样的呢?
interface InnerClass {
int getNum();
}
public class OuterClass {
public InnerClass getInnerClass(final int x) {
return new InnerClass() {
int num=x+100;
@Override
public int getNum() {
return num;
}
};
}
public static void main(String[] args){
InnerClass in=new OuterClass().getInnerClass(100);
System.out.println(in.getNum());
}
}
问的是final修饰的形参X,如果把int换成Integer,,又是如何?
1.被final修饰的变量是常量
2.final不会改变存储区域
3.生命周期也不会改变
形参是 对象的地址吧,你传进来的是一个对象,也就是一个堆内存的地址 final修饰它后这个地址不能再改变。对于基本类型,不可变指的是值
对于引用类型,不可变指的是引用地址 。周期的话,方法调用结束应该就结束了
这问题问的怪怪的。。。可否详细解释下你想问的问题
形参,作为方法的参数,都是局部变量。最初的所有的类的信息都保存在方法区中。而局部变量则是在栈中的,当你调用该方法的时候,该方法入栈,局部变量就保存在该方法栈中,如果是基本类型那么值和变量都在栈中,如果是引用类型那么就栈中放的就是他的引用,而真正的引用的对象内容保存在堆中