參考自: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碼 );大小範圍 是0—65535 ;char是一個16位二進制的Unicode字符(UTF-8是Unicode的實現方式之一。),JAVA用char來表示一個字符 。其中char是無符號的,不能表示負數。char、byte、int對於英文字符,可以相互轉化。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個字節