工作總結20191221

2021-10-01 13:41:21 字數 2098 閱讀 4129

在判斷兩個數是否相等的時候發現數值相同的long型可能相等又可能不等。

檢視long型的原始碼

private

static

class

longcache

static

final long cache=

newlong[-

(-128)

+127+1

];static

}

public

static long valueof

(long l)

return

newlong

(l);

}

long中有乙個靜態的內部類longcache,專門用於快取-128至127之間的值,一共256個元素。

valueof(long l)就是使快取派上用場的方法,它會判斷傳入的引數是否在-128~127之間,如果是則直接從快取中返回對應的引用,否則新建立乙個long的例項。

當使用』』==』'比較時

例1

long long1 =

123l;

long long2 =

123l;

system.out.

println

(long1==long2)

;

結果是:true

分析:"=="用來判斷兩個數是否相等其實是判斷兩個數的位址是否相等,long1和long2的數值都在-128~127之間,它們取值都是從快取中取的123這個值,所以long1和long2的位址是相同的。

例2

long long1 =

128l;

long long2 =

128l;

system.out.

println

(long1==long2)

;

結果是:false;

分析:long1和long2的數值在-128~127之外,這樣會在堆中產生乙個新的物件,所以位址不同。

例3

long long1 =

125l;

long long2 =

newlong

(125l)

; system.out.

println

(long1==long2)

;

結果是:false;

分析:long1數值在-128~127內,位於常量池中,而long2是new出來的,存放於堆中,所以兩者雖然數值都在 -128 ~127之間,但是位址是不同的

例4

long long1 =

200l;

int a =

200;

system.out.

println

(long1==a)

;

結果是:true;

分析:==兩端至少有一端是基本型別,所以意義變成了比較值,也就是對long1拆箱比較,和引用沒關係了。

要比較long型的資料可以用equals,long的原始碼中重寫了equals()方法,用來判斷數值是否相等

public

boolean

equals

(object obj)

return

false

;}

除long之外,還有byte,short,integer,long,character都實現了常量池,除character外,範圍都是(-128~127);character的範圍是(0-127)。

結論比較long型數值時最好還是使用equals進行比較。也可以直接用.lon**alue()比較

工作總結 2010 3 16

在cuda中,一般的資料複製到的顯示卡記憶體的部分,稱為global memory。這些記憶體時沒有cache 的,而且,訪問global memory所需要的時間 即latency 是非常長的,通常是數百個cycles.如果我們的程式只有乙個thread,所以每次它讀取global memory的...

找工作總結

算一算,從2008年9月份開始找工作,到2009年12月現在已經有3個月了 找工作,算是人生一段特殊的經歷吧,知道了很多公司,認識了很多人,也學習到了很多東西,對這個社會也認識的更清楚了。從一開始的自信,以為很多崗位都是為自己量身打造,卻一次次被bs,讓我很受打擊。特別是幾個好公司的筆試都沒有通過,...

2011工作總結

1 編碼能力 實踐中,開始注重模型的概念。所謂模型打個比方 要做一台電視機,首先搞清楚你想怎麼使用它,目的是讓它看起來更方便易用。根據常規經驗判斷,電器需要電源 需要訊號,這兩點是必不可少。ok,那畫個草圖,電視要顯示,那我給它準備乙個顯示的東西,現實生活中,有以下標準可選 液晶顯示器,投影顯示器 ...