黑马程序员技术交流社区

标题: 关于char、String转byte [打印本页]

作者: 戴振良    时间: 2012-2-18 16:23
标题: 关于char、String转byte
本帖最后由 戴振良 于 2012-2-25 10:32 编辑
  1.                 String a="a";
  2.                 char b='a';
  3.                 byte c=(byte)a;//这里会报错说:不可转换的类型
  4.                 byte d=(byte)b;
  5.                 System.out.println(c);
  6.                 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