JAVA char与byte的区别和转换
2016-04-29 09:59
691 查看
很多初学者(包括我,已经学了一年多Java了)肯会对char和byte这两种数据类型有所疑惑,相互混淆,今天特地查了好多资料,对byte和char两种数据类型进行了总结和比较,先将结果与大家分享:
byte 是字节数据类型 ,是有符号型的,占1 个字节;大小范围为-128—127 。char 是字符数据类型 ,是无符号型的,占2字节(Unicode码 );大小范围 是0—65535 ;char是一个16位二进制的Unicode字符,JAVA用char来表示一个字符 。
下面用实例来比较一下二者的区别:
1、Char是无符号型的,可以表示一个整数,不能表示负数;而byte是有符号型的,可以表示-128—127 的数;如:
[html] view
plain copy
![](https://oscdn.geek-share.com/Uploads/Images/Content/201611/a7c8e286f463007e2a900848b93dd72c.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201611/9e12f1d3e499fc949c886e7c9e0484f9)
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] view
plain copy
![](https://oscdn.geek-share.com/Uploads/Images/Content/201611/a7c8e286f463007e2a900848b93dd72c.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201611/9e12f1d3e499fc949c886e7c9e0484f9)
char e1 = '中', e2 = '国';
byte f= (byte) '中'; //必须强制转换否则报错
System.out.println(e1);
System.out.println(e2);
System.out.println(f);
结果为:
中
国
45
3、char、byte、int对于英文字符,可以相互转化,如:
[html] view
plain copy
![](https://oscdn.geek-share.com/Uploads/Images/Content/201611/a7c8e286f463007e2a900848b93dd72c.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201611/9e12f1d3e499fc949c886e7c9e0484f9)
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
4、char与byte[]互转
byte 是字节数据类型 ,是有符号型的,占1 个字节;大小范围为-128—127 。char 是字符数据类型 ,是无符号型的,占2字节(Unicode码 );大小范围 是0—65535 ;char是一个16位二进制的Unicode字符,JAVA用char来表示一个字符 。
下面用实例来比较一下二者的区别:
1、Char是无符号型的,可以表示一个整数,不能表示负数;而byte是有符号型的,可以表示-128—127 的数;如:
[html] view
plain copy
![](https://oscdn.geek-share.com/Uploads/Images/Content/201611/a7c8e286f463007e2a900848b93dd72c.png)
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] view
plain copy
![](https://oscdn.geek-share.com/Uploads/Images/Content/201611/a7c8e286f463007e2a900848b93dd72c.png)
char e1 = '中', e2 = '国';
byte f= (byte) '中'; //必须强制转换否则报错
System.out.println(e1);
System.out.println(e2);
System.out.println(f);
结果为:
中
国
45
3、char、byte、int对于英文字符,可以相互转化,如:
[html] view
plain copy
![](https://oscdn.geek-share.com/Uploads/Images/Content/201611/a7c8e286f463007e2a900848b93dd72c.png)
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
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; }
相关文章推荐
- Rxjava基础自己总结的有不足欢迎探讨
- njupt Java 实验1
- Java 多态
- java.lang.String的intern()方法
- java 代码
- 非常经典的JAVA编程题(水仙花数)
- 向Eclipse 中导入WorkSpace已有Android项目: Invalid project description->X overlaps the locaiton of another X
- Java泛型
- Java:String和Date、Timestamp之间的转换
- java实现单链表(增加节点,删除节点,根据下标获取节点,获取链表大小,链表逆序)
- 20145206《Java程序设计》第9周学习总结
- Json在java中的使用
- java排序之快排
- Java URL自定义私有网络协议
- struts2标签库详解
- spring对乱码的处理及其springmvc核心器注册
- 详解备忘录模式及其在Java设计模式编程中的实现
- Dubbo与Zookeeper SpringMVC整合和使用(负载均衡 容错)
- spring 解决多数据源问题,主要的继承类为AbstractRoutingDataSource
- 转:Eclipse常见问题,快捷键收集