1. 程式人生 > >[javase學習筆記]-8.1 statickeyword之特點

[javase學習筆記]-8.1 statickeyword之特點

之前 隨著 小強 pop dsm name 變量 popu tracking

這一節我們來學習java語言中一個新的keyword就是statickeyword。


當然對於每個keyword,我們都要明白的是它有什麽作用,怎麽用。我們先來看一個樣例:

class Person
{
	String name;//姓名
	String country = "中國";//國籍

	public void printInfo()
	{
		System.out.println(name+":"+country);
	}
}

class StaticTest 
{
	public static void main(String[] args) 
	{
		Person p = new Person();
		p.name = "小強";
		p.printInfo();
		Person p1 = new Person();
		p1.name = "小明";
		p1.printInfo();
		Person p2 = new Person();
		p2.name = "小紅";
		p2.printInfo();
	}
}
我們看看這個樣例的執行結果:

技術分享

我們會發現創建的三個對象中,姓名不同。可是國籍是同樣的,那麽對於非常多個對象呢,國籍是同樣的。那麽我們就會想能不能把國籍獨立起來放到一個空間中供全部對象直接引用就能夠了。而在對象中僅僅須要有姓名這個屬性就可以。

java語言給我了我們解決問題的途徑,那就是我們如今要說的statickeyword。

非常明顯。我們也就明白了statickeyword的作用:就是把特有數據謎面全部對象都能共享的數據,也稱為對象的共享數據。

那麽上面的代碼用statickeyword進行優化:

class Person
{
	String name;//姓名
	static String country = "中國";//國籍

	public void printInfo()
	{
		System.out.println(name+":"+country);
	}
}
當然結果還是我們上面看到的結果。可是實際上,內存中會把country專門存放在一個獨立的空間中,而每一個對象中都僅僅有name屬性,這樣就節省了非常多不必須的空間。


我們剛才看了statickeyword的作用,那麽以下我們再來看statickeyword有哪些特點呢?

我們通過上面的樣例。引申總結出下面四條特點:

1.static既是keyword。也是修飾符。用於修飾成員。這裏的成員就是成員變量和成員函數。

2.statickeyword修飾的數據是共享數據。我們前面看到了static的作用就是修飾共享數據,而對象中存儲的數據就是每一個對象的特有數據。

3.statickeyword修飾的成員隨著類的載入而載入。

這是因為static修飾的數據要被全部對象共享,所以要在對象共享之前就存在。因此java語言就賦予了static這種功能。

4.statickeyword修飾的成員優先於對象存在,由於static成員是隨著類的載入面存在的。

5.statickeyword修飾的成員多了一種調用方法。能夠直接被類名調用,即:類名.靜態成員 的調用方式。

比方上面的樣例中,我們能夠這樣調用:

class StaticTest 
{
	public static void main(String[] args) 
	{
		Person p = new Person();
		//p.name = "小強";
		//p.printInfo();
		System.out.println(Person.country);
	}
}
結果:

技術分享

我們看到staitc修飾的成員我們能夠直接用類名去調用,也就是說我們不須要創建對象就能夠直接調用。由於static成員隨著類的載入而存在,實現了同樣數據被不多個對象的共享。


當然。既然我們的java是面向對象語言,假設我們把全部的成員都用static修飾。也就是說沒有對象了,那是一件多麽可怕的事情呢。可是,無論怎麽說,共享數據個人覺得確實還是比較爽的。


[javase學習筆記]-8.1 statickeyword之特點