1. 程式人生 > 實用技巧 >java 的變數以及構造方法

java 的變數以及構造方法

區域性變數和成員變數

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;
    }
}