Java基礎知識整理之static應用與總結

前面兩篇分別介紹了static的屬性以及方法。本篇就作一個收尾,介紹下剩下的。java

在以前的總結:this

  • 無論多少個對象,都使用同一個 static 屬性
  • 使用 static 方法能夠避免掉用實例化方法以後才能調用的限制。

導入 static 類的包

靜態導入包

靜態導包用法,將類的方法直接導入到當前類中,從而直接使用「方法名」便可調用類方法,更加方便。可是看上面的就不是特別直觀,不便於閱讀代碼。code

Utils.java對象

package statics.utils;

public class Utils {

    public static int int2Str(String str) {
        return Integer.valueOf(str);
    }

    public static int add(int x, int y) {
        return x+y;
    }
}

Test.java內存

// 導入包 注意使用了 static 關鍵字
import static statics.utils.Utils.*;

public class Test {

    public static void main(String[] args) {
        // 上面使用了 static 關鍵字以後,能夠直接使用 Utils 中的方法。
        add(1, 2);
    }
}

經過 類名.方法名

Test.javaget

// 導入包 注意沒有使用 static 關鍵字了
import statics.utils.Utils;

public class Test {

    public static void main(String[] args) {
        // 上面使用了 static 關鍵字以後,能夠直接使用 Utils 中的方法。
        Utils.add(1, 2);
    }
}

static 的實例用法

對於瞭解了static 方法以後,在來看幾個實際的例子回顧與加深下對 static的理解。it

示例一:實現類實例化的統計

需求class

但願在每次實例化對象的時候,都打印一個信息,輸出產生第 x 個實例化對象。import

Test.java方法

class Book {
    
    static int Index = 0;
    
    Book(){
        Index++;
        System.out.println("實例化對象第"+ Index + "個");
    }
}

public class Test {

    public static void main(String[] args) {
        new Book();     new Book();     new Book();
        new Book();     new Book();     new Book();
    }
}

控制檯輸出

實例化對象第1個
實例化對象第2個
實例化對象第3個
實例化對象第4個
實例化對象第5個
實例化對象第6個

示例二:實現屬性的自動設置

需求

例如:如今某一個類有一個無參構造方法,一個有參構造方法,有參構造主要的目的是傳遞一個 title 屬性,可是但願調用的無論是 有參構造方法仍是無參構造方法,均可覺得 title 設置內容,但願內容不要重複。

Test.java

class Book {

    private String title;
    static int Index = 0;

    Book() {
        // 經過 this 關鍵字調用有參構造方法
        this("NOTITLE" + Index++);
    }

    Book(String title) {
        this.title = title;
    }
    
    public String getTitle() {
        return this.title;
    }
}

public class Test {

    public static void main(String[] args) {
        System.out.println(new Book("java").getTitle());
        System.out.println(new Book().getTitle());
        System.out.println(new Book().getTitle());
    }
}

控制檯輸出

java
NOTITLE0
NOTITLE1

總結

  • static 屬性和方法能夠再沒有實例化對象的時候直接由類名稱進行調用。
  • static 屬性保存在全局數據區。內存區一共有四個:棧內存、堆內存、全局數據區(存放全部的數據)、全局代碼區(存放全部的方法)
相關文章
相關標籤/搜索