根据doc,java中的局部变量在方法,构造函数或块中声明。
在下面的A类中,不是x也是局部变量,因为它在块({})中我知道它们被称为实例变量,但我很困惑?如果是访问修饰符不能用于本地变量,但我相信我可以添加公共私有保护?它还说局部变量存储在堆栈中但是根据下面的代码,x将被存储在堆中,因为它们是实例的一部分?
class A{
private int x = 5; // Isn't this a local varibale too since it is in blocks
}
class A{
public void function(){
int x = 5; // this is a local variable since it is declared in a function
private int x2=5; // Error Access modifiers cannot be used for local variables
}
}
答案 0 :(得分:2)
在下面的A类中,不是x也是局部变量,因为它在块({})
中
没有。它不是一个块。它在一个类声明中,但那不是block。 “阻止”不是“大括号中的文字”的同义词。
为了更清楚一点,局部变量在:
中声明如果你看一下class declaration的产品,那就不是一个Block(与静态初始化器和实例初始化器的生产不同)。
答案 1 :(得分:1)
在下面的A类中,isn< t?t x也是一个局部变量,因为它在 块({})
您的x
不是本地变量,它是一个实例变量。块意味着,实例初始化块或静态块或尝试捕获块。
访问修饰符不能用于局部变量,但我相信我 可以添加公共私有保护吗?
对方法局部变量使用访问修饰符没有意义,因为方法局部变量只能在方法内部访问。
答案 2 :(得分:0)
答案 3 :(得分:0)
局部变量是一个具有局部范围的变量,通常不会持续很长时间。
如果在方法中声明一个变量,那么该变量只有在执行该方法时才有意义,并且在该方法完成后,该变量将被丢弃。
实例变量是一个绑定到""的实例的变量。并且通常被认为持续时间和#34;某些东西"持续。
如果在类中声明变量,那么当您创建类的新实例时,该变量也将被创建并固定到类上。只要你创建的类的实例对象存在,变量就会存在,如果你决定放弃你所创建的类的实例,那么实例变量也会被丢弃。
希望这很直观。