本文目錄一覽:
Java中靜態變量有沒有生命周期,java中能否定義共享全局變量?
任何東西都有聲明周期,簡單點說一段代碼所有線程運行結束,程序退出,jvm中所有對象都銷毀,內存被回收.具體說你的問題.類靜態變量和類元信息是保存在永久代(PermGen),在類被第一次加載時在內存中分配空間,通過類名引用指向靜態變量的值.形如 A.name;這個變量跟具體的類A的對象沒關係.通過類對象訪問的只是類變量,數據具體的類,每個類各自分配獨立的空間存儲自己的類變量.或者說靜態變量屬於jvm級別的變量.至於靜態變量的聲明周期,何時被銷毀內存被回收,要看具體GC的實現.sun的HotSpot好像是類的字節碼類元信息和類對象都無引用時生命周期結束GC回收.jvm的這塊東西我也是最近剛開始看,以上的解釋僅供參考,有異議大家可以一起研究下.
Java里如何做到一個變量成為共享數據
可以通過這個類的全局變量和定義一個減法的方法來實現呀.
按你說的例子我們可以這麼寫
首先,定義一個要被共享變量的類:
public class Share {
static int a = 100;// 定義一個值為100的靜態全局變量
public static void minus(int value){//定義一個靜態方法
a = a -value;
}
}
創建一個測試類
public class Test {
public static void main (String[] args){
Share.minus(10); //比如我們要給上面的a變量減10
System.out.println(Share.a);//輸出之前定義的變量的結果為:90
}
}
java中能不能定義一個全局變量,使兩個類共享這個變量
首先要注意的是 java 是面向對像,只要實例化對像了,那對像的屬性就這麼個樣,
想什麼調用從在哪調用都可以
所以想要一個什麼全局變量,就該想到要讓這個全局變量在哪裡容身。
1、容身於實例,在類裡面用public 來定義這個變量,則要用到這個變量時,必須得有這個類的實例。
2、容身於虛擬機,在類裡面用static來定義,這樣子只要加載過這個類,這個變量就一直存在,在哪都方便調用 類名.變量
原創文章,作者:EPITJ,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/127659.html