我都有我的BLOG了,心情真好

哈哈!!!

今天天氣不錯,最近有想找個BLOG,來寫點東西,於是我就找到CSDN,申請還真是方便~比JAVACN好多了!!

       一個不錯的開始,不過還是不是很習慣這個東西,感覺好麻煩的所。

       TAB用起來要跳到下個個框框了面,這點很不爽。

搞了半天,我發現可以用縮近量來搞定TABLE功能。

學習的過程中,要把心得記錄下來:

0.最近看的一本書是JAVA I/O,全英文的,看起來還真是TMD麻煩。

1.首先是關於JAVA裏面變量的轉換問題,上面講到的一些東西是我不知道的:JAVA裏面的INT基本是32位的。雖然也有BYTE、SHORT 、LONG,等這些類型,不過關於BYTE和SHORT就有點問題了,雖然JAVA裏面定義了這兩種類型,不過實際是儲存他們的時候都是按照INT來儲存的:

int i = 42;
short s = i;//i是32位的,所以如果要把它轉換成SHORT,必須要(SHORT)I;
byte b = i;//同樣的道理;
Compiling these lines produces the following errors:
Error: Incompatible type for declaration.
Explicit cast needed to convert int to short.
ByteTest.java line 6
Error: Incompatible type for declaration.
Explicit cast needed to convert int to byte.
ByteTest.java line 7

也就是以32位的方式儲存(還真是浪費空間),不但這樣,而且這樣也有問題:

byte b = 1 + 2;因爲1,2都是INT 32位的,所以這也有問題,因爲B是8位的,如果這樣定義:byte b1=32;byte b2=32;byte b3=b1+b2;也有問題,雖然定義了B1,B2是BYTE,但是B1+B2這個語句裏面,JAVA仍然把它當作32位來處理,所以要讓JAVA把這個東西弄好,必須CAST,也就是B3=(byte)(B1+B2),是不是很鬱悶?就是很鬱悶啊~但是爲什麼只有變量纔出錯,常量就不出錯呢?因爲常量一個INT是32的話,他就固定的位數了,就只有32,也就是8位,固定的,不變的,所以不出錯,但是一個變量INT B=32的時候,雖然32是8位,實際上也可以B=1231321,實際的位數是要變的,所以byte b3=b1+b2,JAVA就只能把他當32位來處理,而不能當成BYTE的8位,所以要出錯。我不知道這樣理解有沒有問題,說錯沒有,不過是我現在這樣想的了。

2.

for (int i = 0; i < b.length; i++) {
b[i] = (byte) System.in.read();
}

這地方我也想了很久,想了半天,聽達人說了,才知道,read()比如你輸入了12313這幾個數字,然後READ就一個一個地自動的給你返回,返回一次i就加一就是這個樣子的~。就是先返回1,然後I加一,然後返回2,然後I加1,知道你第一次的輸入完了,才停止,我發現我越說越不清楚了,不說了。下次我真正理解了再來把這個問題投清楚

總的意思就是說,JAVA裏面沒有真正的BYTE,SHORT,他們都是以INT32位來存儲的。就是這樣,在CAST的時候,實際上是以b = b & 0x000000FF;這樣的方式來弄的(對於BYTE來說),對於SHORT,就是b = b & 0x0000FFFF了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章