❶ java中的static到底有什麼作用
static表示「全局」或者「靜態」的意思,用來修飾成員變數和成員方法,也可以形成靜態static代碼塊,但是Java語言中沒有全局變數的概念。被static修飾的成員變數和成員方法獨立於該類的任何對象。也就是說,它不依賴類特定的實例,被類的所有實例共享。static變數前可以有private修飾,表示這個變數可以在類的靜態代碼塊中,或者類的其他靜態成員方法中使用(當然也可以在非靜態成員方法中使用--廢話),但是不能在其他類中通過類名來直接引用,這一點很重要。實際上你需要搞明白,private是訪問許可權限定,static表示不要實例化就可以使用,這樣就容易理解多了。static前面加上其它訪問許可權關鍵字的效果也以此類推。
❷ JAVA中關於Static的內存分配
static的方法或變數是在類裝載的時候分配內存空間,而且只存在一處。所有對象都是對這一塊內存區域的引用。
http://www.1to2.us/Java-static-a165602.htm
❸ java static作用
作用於方法上時:static方法一般稱作靜態方法,由於靜態方法不依賴於任何對象就可以進行訪問,因此對於靜態方法來說,是沒有this的,因為它不依附於任何對象,既然都沒有對象,就談不上this了。並且由於這個特性,在靜態方法中不能訪問類的非靜態成員變數和非靜態成員方法,因為非靜態成員方法/變數都是必須依賴具體的對象才能夠被調用。但是要注意的是,雖然在靜態方法中不能訪問非靜態成員方法和非靜態成員變數,但是在非靜態成員方法中是可以訪問靜態成員方法/變數的。
作用於變數上時:static變數也稱作靜態變數,靜態變數和非靜態變數的區別是:靜態變數被所有的對象所共享,在內存中只有一個副本【存放在方法區】,它當且僅當在類初次載入時會被初始化【加final和不加final的static變數初始化的位置不一樣】。而非靜態變數是對象所擁有的,在創建對象的時候被初始化,存在多個副本,各個對象擁有的副本互不影響。static成員變數的初始化順序按照定義的順序進行初始化。
作用於代碼塊上時:形成靜態代碼塊以優化程序性能。因為它的特性:只會在類載入的時候執行一次。
作用於內部類上時:在定義內部類的時候,可以在其前面加上一個許可權修飾符static。此時這個內部類就變為了靜態內部類。通常稱為嵌套類,當內部類是static時,意味著:
[1]要創建嵌套類的對象,並不需要其外圍類的對象;
[2]不能從嵌套類的對象中訪問非靜態的外圍類對象(不能夠從靜態內部類的對象中訪問外部類的非靜態成員);
另外,在創建靜態內部類時不需要將靜態內部類的實例綁定在外部類的實例上。普通非靜態內部類的對象是依附在外部類對象之中的,要在一個外部類中定義一個靜態的內部類,不需要利用關鍵字new來創建內部類的實例。靜態類和方法只屬於類本身,並不屬於該類的對象,更不屬於其他外部類的對象。
作用於導包上時:用import static代替import靜態導入包是JDK1.5中的新特性。一般我們導入一個類都用 import com…..ClassName;而靜態導入是這樣:import static com…..ClassName.*;這里的多了個static,還有就是類名ClassName後面多了個.* ,意思是導入這個類里的靜態方法。當然,也可以只導入某個靜態方法,只要把 .* 換成靜態方法名就行了。然後在這個類中,就可以直接用方法名調用靜態方法,而不必用ClassName.方法名的方式來調用。
❹ java static是什麼存儲
JVM內存總體一共分為了
4個部分(stack segment、heap segment、code segment、data segment)
當我們在程序中,申明一個局部變數的時候,此變數就存放在了 stack segment(棧)當中;
當new 一個對象的時候,此對象放在了heap segment(堆)當中;
而static 的變數或者字元串常量 則存在在 data segment(數據區)中;
那麼類中方法的話,是存在在 code segment(代碼區)中了。
❺ java中static關鍵字的意義
1. static關鍵字 : 靜態的意思。可以修飾成員變數和成員方法。
2. static關鍵字的特點
A : 隨著類的載入而載入
B : 優先於對象存在
C : 被類的所有對象共享
這其實也是我們判斷該不該使用靜態的依據。
同一個班級的學生應該共用同一個班級編號。
飲水機 (用靜態修飾)
水杯 (不能用靜態修飾)
D : 可以通過類名調用
既可以通過對象名調用,也可以通過類名調用,建議通過類名調用。
3. static關鍵字的注意事項
A : 在靜態方法中沒有this關鍵字,如何理解呢 ?
靜態是隨著類的載入而載入,this是隨著對象的創建而存在。
靜態比對象先存在。
B : 靜態只能訪問靜態。
靜態方法只能訪問靜態的成員變數。
靜態方法只能訪問靜態的成員方法。
非靜態方法可以訪問靜態和非晶態的成員變數。
非靜態方法可以訪問靜態和非晶態的成員方法。
4. 靜態變數和成員變數的區別
A : 所屬不同
靜態變數:屬於類,類變數
成員變數:屬於對象,對象變數,實例變數
B : 內存位置不同
靜態變數:方法區的靜態區
成員變數:堆內存
C : 生命周期不同
靜態變數:靜態變數是隨著類的載入而載入,隨著類的消失而消失
成員變數:成員變數是隨著對象的創建而存在,隨著對象的消失而消失
D : 調用不同
靜態變數:可以通過對象名調用,也可以通過類名調用
成員變數:只能通過對象名調用
❻ java static 在內存嗎
方法的static和非static效果是一樣的。
非static的方法必須有實例來調用,但函數本身只佔用固定的內存用於執行。
static方法無需實例可以直接調用。
❼ Java中static的作用
1.static 成員變數
在 Java 中還支持用 static 修飾的內部類,稱為靜態內部類。靜態成員內部類的特點主要是它本身是類相關的內部類,所以它可以不依賴於外部類實例而被實例化。靜態內部類不能訪問其外部類的實例成員(包括普通的成員變數和方法),只能訪問外部類的類成員(包括靜態成員變數和靜態方法)。即使是靜態內部類的實例方法(非靜態成員方法)也不能訪問其外部類的實例成員。
❽ java中static是什麼意思能不能通俗的講下,讓我這個菜鳥好理解一點
static英文是靜態的意思,所以它在java中也是這么用的,是一個修飾詞,在定義數據前面加上它是指這個數據是靜態不變的,在方法明加上它是指這個方法是靜態的。一般就是這些用處