簡體   English   中英

為什么在類中定義的變量不是局部變量而是java中的實例變量?

[英]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局部變量,因為它在塊({})中

不,它不在一個街區。 它在一個類聲明中,但這不是一個 “Block”與“大括號中的文字”不是同義詞。

為了更清楚一點,局部變量在:

如果你看一下類聲明的產生 ,那就不是一個Block(與靜態初始化器和實例初始化器的生產不同)。

在下面的類A中也不是xa局部變量,因為它在塊({})中

你的x不是局部變量,它是一個實例變量。 塊意味着,實例初始化塊或靜態塊或嘗試捕獲塊。

訪問修飾符不能用於局部變量,但我確定我可以添加公共私有保護?

對方法局部變量使用訪問修飾符沒有意義,因為方法局部變量只能在方法內部訪問。

我不完全確定你在哪里讀書。 局部變量是在方法內聲明的值。

沒有特殊的關鍵字將變量指定為本地變量; 該決定完全來自聲明變量的位置 - 它位於方法的開始和結束括號之間。

取自這里

局部變量是具有局部范圍的變量,通常不會持續很長時間。

如果在方法中聲明變量,則該變量僅在執行該方法時才相關,並且在該方法完成后,該變量將被丟棄。

實例變量是綁定到“某事”實例的變量,並且通常被認為只要“某事”持續就會持續。

如果在類中聲明變量,那么當您創建類的新實例時,該變量也將被創建並固定到類上。 只要您創建的類的實例對象存在,變量就會存在,如果您決定放棄所創建的類的實例,那么實例變量也會被丟棄。

希望這很直觀。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM