java-byte-char

參考自:http://blog.csdn.net/luoweifu/article/details/7770588

http://sudongyuan.iteye.com/blog/869949

http://www.2cto.com/kf/201303/193644.html

java八種基本類型:byte、char、short、int、long、float、double、boolean。

其中對byte和char不熟悉,基本沒有使用過:還有就是兩者和String的區別。

byte 是字節,char 是字符 string 是字符串兩個字節構成一個字符,多個字符構成字符串。

  byte 是字節數據類型 ,是有符號型的,佔1 個字節;大小範圍爲-128—127 。char 是字符數據類型 ,是無符號型的,佔2字節(Unicode碼 );大小範圍 是065535 ;char是一個16位二進制的Unicode字符(UTF-8是Unicode的實現方式之一。),JAVAchar來表示一個字符 。其中char是無符號的,不能表示負數。char、byteint對於英文字符,可以相互轉化。char可以表示中文字符,byte不可以。

char類型一般佔用兩個字節,所以能存儲中文字符(一箇中文字符佔用兩個字節)。

         char a = '中' ;(合法)   char a = 'ab' ;(非法的)

       所以char類型在內存中佔用兩個字節空間,但是隻能表示一個字符。若是隻要表示一個字節的字符,可以考慮byte。

byte表示字節,佔用內存一個字節的空間。

        byte a = 'a' ;(合法)    byte a  = '中' ;(非法的,不能存放中文字符)

另外:1 byte = 8 bit (bit就是0和1的一個位數,8bit表示一個字節)

 

String str = "中" ;

byte[]  a = str.getBytes();

System.out.println(a.length); //打印出多長?

result:可能2,3,4.

原因是getBytes()方法會根據當前默認的字符編碼格式獲取字節數組,gbk/gb2312佔2位,utf-8佔3位,unicode佔4位(自己使用GBK結果爲2,使用UTF-8結果爲3)。

char在Java中是16個字節 
byte在Java中是8個字節 

char c = (char) -3; // char不能識別負數,必須強制轉換否則報錯,即使強制轉換之後,也無法識別  
System.out.println(c);  
byte d1 = 1;  
byte d2 = -1;  
byte d3 = 127; // 如果是byte d3 = 128;會報錯  
byte d4 = -128; // 如果是byte d4 = -129;會報錯  
System.out.println(d1);  
System.out.println(d2);  
System.out.println(d3);  
System.out.println(d4);  
結果爲:
?
1
-1
127
-128
2、char可以表中文字符,byte不可以,如:
[html]   
char e1 = '中', e2 = '國';  
byte f= (byte) '中'; //必須強制轉換否則報錯  
System.out.println(e1);  
System.out.println(e2);  
System.out.println(f);  
結果爲:
45
3、char、byte、int對於英文字符,可以相互轉化,如:
[html]  www.2cto.com
byte g = 'b'; //b對應ASCII是98  
        char h = (char) g;  
char i = 85;    //U對應ASCII是85  
int j = 'h';    //h對應ASCII是104  
System.out.println(g);  
System.out.println(h);  
System.out.println(i);  
System.out.println(j); 
結果爲:
98
b
U
104






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