JAVA char与byte的区别和转换

很多初学者(包括我,已经学了一年多Java了)肯会对char和byte这两种数据类型有所疑惑,相互混淆,今天特地查了好多资料,对byte和char两种数据类型进行了总结和比较,先将结果与大家分享:

 

 

        byte 是字节数据类型 ,是有符号型的,占1 个字节;大小范围为-128—127 。char 是字符数据类型 ,是无符号型的,占2字节(Unicode码 );大小范围 是065535 ;char是一个16位二进制的Unicode字符,JAVA用char来表示一个字符 。

 

        下面用实例来比较一下二者的区别:

 

1、Char是无符号型的,可以表示一个整数,不能表示负数;而byte是有符号型的,可以表示-128—127 的数;如:

[html]  view plain  copy
 
  uploading.4e448015.gif转存失败重新上传取消 uploading.4e448015.gif转存失败重新上传取消
  1. char c = (char) -3; // char不能识别负数,必须强制转换否则报错,即使强制转换之后,也无法识别  
  2. System.out.println(c);  
  3. byte d1 = 1;  
  4. byte d2 = -1;  
  5. byte d3 = 127; // 如果是byte d3 = 128;会报错  
  6. byte d4 = -128; // 如果是byte d4 = -129;会报错  
  7. System.out.println(d1);  
  8. System.out.println(d2);  
  9. System.out.println(d3);  
  10. System.out.println(d4);  

结果为:

?
1
-1
127
-128

 

2、char可以表中文字符,byte不可以,如:

 

[html]  view plain  copy
 
  uploading.4e448015.gif转存失败重新上传取消 uploading.4e448015.gif转存失败重新上传取消
  1. char e1 = '中'e2 = '国';  
  2. byte f= (byte) '中'; //必须强制转换否则报错  
  3. System.out.println(e1);  
  4. System.out.println(e2);  
  5. System.out.println(f);  

结果为:



45

 

3、char、byte、int对于英文字符,可以相互转化,如:

 

 

[html]  view plain  copy
 
  uploading.4e448015.gif转存失败重新上传取消 uploading.4e448015.gif转存失败重新上传取消
  1. byte g = 'b';   //b对应ASCII是98  
  2. char h = (char) g;  
  3. char i = 85;    //U对应ASCII是85  
  4. int j = 'h';    //h对应ASCII是104  
  5. System.out.println(g);  
  6. System.out.println(h);  
  7. System.out.println(i);  
  8. System.out.println(j);  

 

结果为:
98
b
U

 

104

 

4、char与byte[]互转

 

	public static byte[] charToByte(char c) {
		//十六进制表示 1-9  10为A  11为B 12为C 13为D 14为E 15为F
		//在计算机中 十六进制表示未    0000  表示为0    1111 表示为F
        byte[] b = new byte[2];
        
        //0xFF00   计算机表示    1111 1111 0000 0000   &表示同为1则为1   >>8 右移8为  相当于 切掉0000 0000 只保留前面的数值
        b[0] = (byte) ((c & 0xFF00) >> 8);

        //0xFF  计算机表示   1111 1111     &表示同为1则为1  字符前面位数不够 自动忽略   只保留后面的数字 ,这样就拆分开了 
        b[1] = (byte) (c & 0xFF);
        return b;
	}
	public static char byteToChar(byte[] b) {
		//将高位还原回去,再加上低位
        char c = (char) (((b[0] & 0xFF) << 8) | (b[1] & 0xFF));
        return c;
	}

 

 

 

 

 

 

你可能感兴趣的:(JAVA)