[英]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.