您好,登錄后才能下訂單哦!
本文小編為大家詳細介紹“Java中Static關鍵字使用的方法有哪些”,內容詳細,步驟清晰,細節處理妥當,希望這篇“Java中Static關鍵字使用的方法有哪些”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。
直接一點,static關鍵字就是把屬性和方法變為類相關,而不是實例相關。
被static關鍵字修飾的屬性叫做靜態屬性,也叫類屬性。顧名思義現在該屬性為該類所有,而非該類實例化的對象所有,在類的加載階段進行初始化。雖然使用類實例化的對象也能夠調用該屬性,但是該屬性是屬于類所有,所有該類的實例化對象和該類共享一個值,即操作的是同一個值。
public class Person{ static int age; static int high = 175; public static void main(String[] args){ System.out.println(age); System.out.println(high); } } class PersonTest{ public static void main(String[] args){ System.out.println(Person.age); } }
成員變量不給初始值的話,會進行默認初始化。
被static修飾的屬性,可以認為是屬于類的,只要類進行加載以后,便可以使用類名.屬性名
進行調用。
被static關鍵字修飾的方法叫做類方法,修飾后的方法可以直接使類名.方法名
調用,減少了實例化對象進行調用的資源消耗。
簡單的來說被static修飾的方法,可以認為是屬于類的,只要類進行加載以后,則就可以進行使用。
public class Person{ static int age; static int high = 175; public static void seeMessage(String msg){ System.out.println(msg); } } class PersonTest{ public static void main(String[] args){ Person.seeMessage("Hello Codermast!"); } }
這里需要注意的是一個靜態方法是不能夠直接調用同類下的非靜態方法,而同類下的非靜態方法則可以調用同類下的靜態方法。
被static修飾的內部類完全獨立于其所在的外部類,不屬于外部類的對象,可以認為兩個類是完全沒有關系的兩個類。
靜態內部類可以包含靜態成員,也可以包含非靜態成員,但是在非靜態內部類中不可以聲明靜態成員。
靜態類內部不可以訪問外部類的實例成員,只能訪問外部類的類成員,即使是靜態內部類的實例方法也不能訪問外部類的實例成員,只能訪問外部類的靜態成員
外部類不可以定義為靜態類,Java中靜態類只有一種,那就是靜態內部類,頂級類不能用static 修飾
外部類如何調用靜態內部類的屬性和方法:
外部類可以通過創建靜態內部類實例的方法來調用靜態內部類的非靜態屬性和方法
外部類可以直接通過“ 外部類.內部類.屬性(方法)” 的方式直接調用靜態內部類中的靜態屬性和方法
創建一個靜態內部類實例:
在外部類中:直接使用類名創建即可,內部類名 name = new 內部類構造器;
在其他類中:使用外部類.內部類 name = new 外部類.內部構造器;
static修飾代碼塊的作用就是,在類加載以后進行執行這段代碼。我們需要著重看一下具體的執行順序。下面是一個簡單的示例。
class Dog { String name; public Dog(String name) { this.name = name; System.out.println("狗的名字叫:" + name); } } class Person { String name; public Person(String name){ this.name = name; System.out.println("人的名字叫:" + name); } static int age = 18; static { System.out.println("靜態代碼塊1執行..."); } static Dog xiaohuang = new Dog("小黃"); Dog xiaohua = new Dog("小花"); static { System.out.println("靜態代碼塊2執行..."); } static int high = 175; Dog xiaohei = new Dog("小黑"); static Dog xiaobai = new Dog("小白"); public static void main(String[] args) { Person person = new Person("codermast"); } }
該示例執行后的結果如下所示:
則我們可以判斷出執行的順序為:
靜態代碼塊和靜態屬性的順序執行
非靜態屬性的執行
方法的調用
這里主要解釋第一點,靜態代碼塊和靜態屬性屬于同一優先級,順序執行。舉個簡單的例子即可理解:
這里我們就無法調用到age屬性
靜態導包用法,將類的方法直接導入到當前類中,從而直接使用“方法名”即可調用類方法,更加方便。
PrintMsg類
public class PrintMsg{ public static void printMsg(String msg){ System.out.println(msg) } }
Test類
import static codermast.util.PrintMsg.*; public class Test{ public static void main(String[] args){ printMsg("hello codermast!") } }
運行Test類中的main方法后,就能在控制臺看到“hello codermast!”的一行輸出。
需要注意的是:導入的靜態方法所處的類,不能和調用的類在同一個包下。
讀到這里,這篇“Java中Static關鍵字使用的方法有哪些”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。