天天看點

傑神之Java構造方法和靜态方法Java構造方法和靜态方法

Java構造方法和靜态方法

構造方法

一個類 可以有多個構造函數。構造函數的主要作用 一是用來執行個體化該類。二是 讓該類執行個體化的時候執行哪些方法,初始化哪些屬性。

* 注意事項

1.如果你沒寫無參構造方法 系統會給你提供一個無參構造方法

2.如果隻寫了有參的構造方法 這時系統不再提供 無參構造方法

3.寫類的時候 建議 無參有參構造方法一起寫

public class Demo01 {
    public static void main(String[] args) {
        Car car = new Car();
        car.name = "保時捷";
        car.num = ;
        car.sayHi();
        //使用有參構造方法建立對象
        Car car2 = new Car("比亞迪", F10);
        System.out.println(car2.name + " " + car2.num);
        //在指派成員變量時 使用哪種方法好?  set方法 和 有參構造方法
        //具體看情況 大多使用set方法
    }
}
    class Car{
        String name;
        int num;
        // 構造方法的重載:隻跟參數有關
        //無參 構造方法
        public Car() {
            System.out.println("我是無參的構造方法");
        }

        //有參 構造方法       
        public Car(String name, int num) {
            this.name = name;
            this.num = num;
            System.out.println("我是有參的構造方法");
        }
        //當類中的成員變量 需要計算的時候 可以在構造方法中完成
        public void sayHi() {
            System.out.println(name + " " + num);
        }
    }
           

靜态方法

靜态方法是使用公共記憶體空間的,所有對象都可以直接引用,不需要建立對象再使用該方法.

* 靜态方法的調用

1.可以使用 對象 來調用

2.推薦 使用類名調用,因為隻要加載了.class 檔案 就加載了靜态變量 這時還沒有對象産生

* 靜态變量(屬于類 也叫類變量 ) 和 非靜态變量(屬于對象或者說對象變量) 的差別

1.調用方式不同 
靜态變量 : 對象或類名去調用(推薦) 
非靜态變量 :隻能使用對象來調用 
2.記憶體中存在的位置不同 
靜态變量 :方法區的靜态區 
非靜态變量 :堆記憶體區 
3.加載的時機不同 
靜态變量 :随着類的加載而加載(不依賴對象而加載) 
非靜态變量 :随着對象的建立而建立(依賴對象) 
4.生命周期不同 
靜态變量 :随着類的銷毀而銷毀 
非靜态變量 :随着對象的銷毀而銷毀
           
  • 靜态變量在記憶體中加載步驟
加載.class檔案(位元組碼檔案)到方法區 
main方法入棧 
建立類 的對象 先 加載 類.class 檔案 其檔案中 分為靜态區和非靜态區 這時初始化靜态變量 初值為 Null 
建立對象(堆區開辟空間) 
把對象的位址指派給對象 儲存 
通關類名 修改 靜态類變量的值 
調用方法入棧 執行語句 
方法出棧 
main出棧
           

那麼靜态方法和非靜态方法有什麼差別呢?

非靜态方法:
1.可以使用靜态變量和非靜态變量 
2.可以使用靜态方法和非靜态方法

靜态方法:
1.隻能使用靜态變量 
2.隻能使用靜态方法
           

靜态變量和靜态方法在記憶體中的表現

傑神之Java構造方法和靜态方法Java構造方法和靜态方法