1 相同點:
1.1 定義變數的格式:資料型別 變數名 = 變數值
1.2 先宣告,後使用
1.3 變數都有其對應的作用域
2 不同點
2.1 在類中宣告的位置不同
屬性:直接定義在類的一對{}裡面
區域性變數:宣告在方法內、方法形參、**塊內、構造器形參、構造器內部的變數
2.2 關於許可權修飾符的不同
屬性:可以在宣告屬性時,指明其許可權,使用許可權修飾符
常用的許可權修飾符:private、public、預設、protected
區域性變數:不可以使用許可權修飾符
2.3 預設初始值的情況
屬性:類的屬性,根據其型別,都有預設值初始化
整型(byte、short、int、long):0
浮點型(float、double):0.0
字元型(char):0 (或』\u000』)
布林型(boolean):false
引用資料型別(類、陣列、介面):null
區域性變數:沒有預設初始化值
意味著,我們在呼叫區域性變數之前,一定要顯示賦值。
特別的:形參在呼叫時,我們賦值即可。
2.4 在記憶體中載入的位置
屬性:載入到堆空間(非static)
區域性:載入到棧空間
編譯完源程式後,生成乙個或多個位元組碼檔案。
我們使用jvm中的類載入器和直譯器對生成的位元組碼檔案進行解釋執行。意味著,需要將位元組碼檔案對應的類載入到記憶體中,涉及到記憶體解析。
記憶體結構
《jvm規範》書籍
虛擬機器棧,即為平時提到的棧結構。我們將區域性變數儲存在棧結構中。
堆,我們將new出來的結構載入在堆空間中。補充:物件的屬性(非static)載入在堆空間中。
方法區:類的載入資訊、常量池、靜態域
C 中類的屬性
關於為什麼要使用屬性 用於替代原c 或者其它程式語言中的訪問器和變異器。一直以來很多程式語言都是用訪問器來實現對私有變數操控,比如setspeed 及getspeed 這是兩種方法,以前c 的寫法是 int speed int maxspeed 100 bool setspeed int s els...
java 對類中的屬性使用set get方法的作用
經常看到有朋友提到類似 對類中的屬性使用set get方法的作用?理論的回答當然是封閉性之類的,但是這樣對我們有什麼作用呢?為什麼要這樣設計?我直接使用屬性名來訪問不是更直接,更簡潔明瞭嗎?下面我們就來介紹下為什麼要使用set get方法來代替直接訪問屬性。1.靈活性 比如我們有乙個person類,...
類中屬性和方法的定義和使用
1.1 在類中宣告屬性 語法 修飾符 型別 變數名 修飾符 型別 變數名 值 eg private string name 小明 public int age protected boolean isonline 修飾符 public 公有的,都可以訪問 protected 保護 只有子類能訪問 p...