本文目錄一覽:
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-tw/n/127659.html