黑马程序员技术交流社区
标题:
关于char、String转byte
[打印本页]
作者:
戴振良
时间:
2012-2-18 16:23
标题:
关于char、String转byte
本帖最后由 戴振良 于 2012-2-25 10:32 编辑
String a="a";
char b='a';
byte c=(byte)a;//这里会报错说:不可转换的类型
byte d=(byte)b;
System.out.println(c);
System.out.println(d);
复制代码
char占两个字节,byte占一个字节,char比byte所占的内存大。
1、为什么char可以转换为byte,而String不行
2、char是什么样的字符时转换为byte会丢失精度,请举几个字符,谢谢!!
作者:
彭小芳
时间:
2012-2-18 16:34
本帖最后由 pengfangjava 于 2012-2-18 16:49 编辑
1. char转换为byte, 是将char的低8位取出来作为一个字节
String可以转为byte数组 : byte[] buf = a.getBytes();
2.
char c = '中';
byte b=(byte) c;
System.out.println(b);
c=(char) b;
System.out.println(c);
输出结果:
45
-
可以看出,中文字符就会丢失精度
作者:
邱纲
时间:
2012-2-18 16:46
问题1:String不能这样去转换成char类型,如果需要可以这样转换:String str = "a"; char b =str.charAt(0);这样就可以了。
问题2:只要是char类型的,要转换成byte类型,都会丢失精度,不管是什么字符,都一样,你要搞清楚原理,为什么会出现丢失精度呢,
那是因为char在内存空间中占用2个字节,而byte类型,呵呵,肯定是占用了一个字节啊,不用我再说下去了吧?
作者:
丁晓宇
时间:
2012-2-18 19:44
占字节数不同
作者:
【专】【属】
时间:
2012-2-21 09:26
为什么char可以转换为byte,而String不行
个人感觉对于这个问题,String是一个对象,而char是java中预定义的基本的说明类型,如果可以转换,我想只能是String对象才清楚如何去做了,这才是面向对象的方式了。因为它们没有什么内在联系,如果能转的话,有点牛马不对了。
作者:
李会启
时间:
2012-2-21 09:58
char占用两个字节而byte占用一个字节,所以char在转换为byte会出现丢失精度,string可以转换为byte在这里需要用到getbyte()
作者:
雷楚光
时间:
2012-2-21 10:27
我觉得 char 和byte都是基础数据类型 而string是引用数据类型 所以string只能转化成数组
作者:
温昌寿
时间:
2012-2-21 21:57
我记得调用一个 getByte()方法可以把String转成byte,你可以试下
作者:
戴振良
时间:
2012-2-25 10:28
明白了,谢谢大家!!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2