参考自: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个字节