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






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