java 的變數以及構造方法
阿新 • • 發佈:2020-08-19
區域性變數和成員變數
1. 定義的位置不一樣【重點】
區域性變數:在方法的內部
成員變數:在方法的外部,直接寫在類當中
2. 作用範圍不一樣【重點】
區域性變數:只有方法當中才可以使用,出了方法就不能再用
成員變數:整個類全都可以通用。
3. 預設值不一樣【重點】
區域性變數:沒有預設值,如果要想使用,必須手動進行賦值
成員變數:如果沒有賦值,會有預設值,規則和陣列一樣
4. 記憶體的位置不一樣(瞭解)
區域性變數:位於棧記憶體
成員變數:位於堆記憶體
5. 生命週期不一樣(瞭解)
區域性變數:隨著方法進棧而誕生,隨著方法出棧而消失
成員變數:隨著物件建立而誕生,隨著物件被垃圾回收而消失
問題描述:定義Person的年齡時,無法阻止不合理的數值被設定進來。
解決方案:用private關鍵字將需要保護的成員變數進行修飾。
一旦使用了private進行修飾,那麼本類當中仍然可以隨意訪問。
但是!超出了本類範圍之外就不能再直接訪問了。
間接訪問private成員變數,就是定義一對兒Getter/Setter方法
必須叫setXxx或者是getXxx命名規則。
對於Getter來說,不能有引數,返回值型別和成員變數對應;
對於Setter來說,不能有返回值,引數型別和成員變數對應。
public class Person { String name; // 姓名 private int age; // 年齡 public void show() { System.out.println("我叫:" + name + ",年齡:" + age); } // 這個成員方法,專門用於向age設定資料 public void setAge(int num) { if (num < 100 && num >= 9) { // 如果是合理情況 age = num; } else { System.out.println("資料不合理!"); } } // 這個成員方法,專門私語獲取age的資料 public int getAge() {return age; } }
對於基本型別當中的boolean值,Getter方法一定要寫成isXxx的形式,而setXxx規則不變。
private boolean male; // 是不是爺們兒 public void setMale(boolean b) { male = b; } public boolean isMale() { return male; }
構造方法
構造方法是專門用來建立物件的方法,當我們通過關鍵字new來建立物件時,其實就是在呼叫構造方法。
格式:
public 類名稱(引數型別 引數名稱) {
方法體
}
注意事項:
1. 構造方法的名稱必須和所在的類名稱完全一樣,就連大小寫也要一樣
2. 構造方法不要寫返回值型別,連void都不寫
3. 構造方法不能return一個具體的返回值
4. 如果沒有編寫任何構造方法,那麼編譯器將會預設贈送一個構造方法,沒有引數、方法體什麼事情都不做。
public Student() {}
5. 一旦編寫了至少一個構造方法,那麼編譯器將不再贈送。
6. 構造方法也是可以進行過載的。
過載:方法名稱相同,引數列表不同。
public class Student { // 成員變數 private String name; private int age; // 無引數的構造方法 public Student() { System.out.println("無參構造方法執行啦!"); } // 全引數的構造方法 public Student(String name, int age) { System.out.println("全參構造方法執行啦!"); this.name = name; this.age = age; } }