哈哈!!!
今天天氣不錯,最近有想找個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了。