導航:首頁 > 編程語言 > javalong賦值

javalong賦值

發布時間:2025-03-15 01:38:56

A. java中long和Long有什麼區別

long是基本類型,Long是long的包裝類

在java中有時候的運算必須是兩個類對象之間進行的,不充許對象與數字之間進行運算。所以需要有一個對象,這個對象把數字進行了一下包裝,這樣這個對象就可以和另一個對象進行運算了。

比如我們也可以定義一個類:

classLong{
longi=0;
publicLong(longi){
this.i=i;
}
}

這樣這個Long就是一個包裝類,他包裝了一個整數值,然後可以在裡面寫一些運算符重載的方法使它支持某些運算。這個時候可以賦值:
Long it=new Long(10);
現在變數it就是一個對象,不是一個數字。

B. Java中的Long和Double類型

Java中的原子操作包括:
1)除long和double之外的基本類型的賦值操作

2)所有引用reference的賦值操作

3)java.concurrent.Atomic.* 包中所有類的一切操作。

但是java對long和double的賦值操作是非原子操作!!long和double佔用的位元組數都是8,也就是64bits。在32位操作系統上對64位的數據的讀寫要分兩步完成,每一步取32位數據。這樣對double和long的賦值操作就會有問題:如果有兩個線程同時寫一個變數內存,一個進程寫低32位,而另一個寫高32位,這樣將導致獲取的64位數據是失效的數據。因此需要使用volatile關鍵字來防止此類現象。volatile本身不保證獲取和設置操作的原子性,僅僅保持修改的可見性。但是java的內存模型保證聲明為volatile的long和double變數的get和set操作是原子的。(from
http://www.iteye.com/topic/213794)

舉個例子來說:(example is from
http://stackoverflow.com/questions/17481153/long-and-double-assignments-are-not-atomic-how-does-it-matter)

public class UnatomicLong implements Runnable {

private static long test = 0;

private final long val;

public UnatomicLong(long val) {

this.val = val;

}

@Override

public void run() {

while (!Thread.interrupted()) {

test = val;
//兩個線程都試圖將自己的私有變數val賦值給類私有靜態變數test

}

}

public static void main(String[] args) {

Thread t1 = new Thread(new
UnatomicLong(-1));

Thread t2 = new Thread(new
UnatomicLong(0));

System.out.println(Long.toBinaryString(-1));

System.out.println(pad(Long.toBinaryString(0),
64));

t1.start();

t2.start();

long val;

while ((val = test) == -1
|| val == 0) {

//如果靜態成員test的值是-1或0,說明兩個線程操作沒有交叉

}

System.out.println(pad(Long.toBinaryString(val), 64));

System.out.println(val);

t1.interrupt();

t2.interrupt();

}

// prepend 0s to the string to make it the target
length

private static String pad(String s, int targetLength) {

int n = targetLength - s.length();

for (int x = 0; x < n; x++) {

s = "0" + s;

}

return s;

}

}

閱讀全文

與javalong賦值相關的資料

熱點內容
什麼是戰略pdf 瀏覽:517
20萬人用什麼伺服器 瀏覽:926
反編譯怎麼解決字串長度 瀏覽:279
農行app怎麼凍結賬號 瀏覽:759
mt反編譯的軟體打不開 瀏覽:518
安卓日上免稅APP如何安裝 瀏覽:583
怎麼買星空加密狗 瀏覽:19
北京程序員薪酬 瀏覽:133
華為榮耀暢玩8c升級方舟編譯器 瀏覽:412
手機怎麼把照片填入文件夾 瀏覽:305
php圖片輪換 瀏覽:929
科二學車app軟體哪個好 瀏覽:645
用aj踩東西的解壓視頻 瀏覽:382
將python編譯成手機app 瀏覽:475
程序員社招國企好進么 瀏覽:696
php路徑寫法 瀏覽:433
為什麼有些網頁安卓打不開 瀏覽:220
如何滲透獲取伺服器資料庫 瀏覽:778
ios是怎麼解析app的 瀏覽:256
按揭車怎麼貸款app 瀏覽:477