从内存细看static
我們知道,當創(chuàng)建一個類時,就是對那個類的外觀以及行為進行實例化,在執(zhí)行New來創(chuàng)建的時候,就會分配一個數(shù)據(jù)存儲空間。
但是,考慮到這兩種情形時,以上的所說的分配的空間就是不滿足,因為這空間是一對一映射的。第一種情形是,只想為某個特定域分配單一存儲空間,不想創(chuàng)建多個對象,甚至,不用創(chuàng)建一個對象。還有一種情形是,希望某個方法不與它的類人和對象關聯(lián)在一起,換一句老土的話來講,就是幾十沒有創(chuàng)建對象,也能調(diào)用這個方法。
通過static可以滿足我們的需求,當聲明了一個事物是static時,就意味著,這個屬性、域或者方法不會與包含他的那個類的任何對象實例關聯(lián)在一起了。所以,即使為創(chuàng)建某個類的任何對象,也能調(diào)用其static方法或訪問其static域。
案例分析
實例1.
Class StaticTest{
static int i = 47 ;
}
StaticTest st1 = new StaticTest();
StaticTest st2 = new StaticTest();
雖然創(chuàng)建了兩個StaticTest對象,StaticTest.i只會擁有一份存儲空間,所以這兩個對象共享同一個i。所以這st1.i和st2.i指向同一存儲空間,因此他們具有相同的值47。如果 StaticTest.i++他們的值也會隨之變化。
實例2.
System.out.println("helloword");
這個輸出語句肯定常用,但是有人探究過沒,System.out這個是靜態(tài)類,是PrintStream類。由于不需要New所以可以直接調(diào)用其的方法。
?
轉(zhuǎn)載于:https://www.cnblogs.com/crazyBugs/p/3619236.html
總結(jié)
以上是生活随笔為你收集整理的从内存细看static的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 22/11/2010
- 下一篇: Java code lib aes 加解