[英]why variable defined in a class is not a local variable but instance variable in java?
根据doc,java中的局部变量在方法,构造函数或块中声明。
在下面的A类不是xa局部变量,因为它是在块({})我知道它们被称为实例变量,但我很困惑? 如果是访问修饰符不能用于本地变量,但我相信我可以添加公共私有保护? 它还说局部变量存储在堆栈中但是根据下面的代码,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
}
}
在下面的类A中也不是xa局部变量,因为它在块({})中
你的x
不是局部变量,它是一个实例变量。 块意味着,实例初始化块或静态块或尝试捕获块。
访问修饰符不能用于局部变量,但我确定我可以添加公共私有保护?
对方法局部变量使用访问修饰符没有意义,因为方法局部变量只能在方法内部访问。
局部变量是具有局部范围的变量,通常不会持续很长时间。
如果在方法中声明变量,则该变量仅在执行该方法时才相关,并且在该方法完成后,该变量将被丢弃。
实例变量是绑定到“某事”实例的变量,并且通常被认为只要“某事”持续就会持续。
如果在类中声明变量,那么当您创建类的新实例时,该变量也将被创建并固定到类上。 只要您创建的类的实例对象存在,变量就会存在,如果您决定放弃所创建的类的实例,那么实例变量也会被丢弃。
希望这很直观。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.