黑马程序员技术交流社区

标题: 为什么可以int z='D'这样赋值,而不用int z=(int)('D'); [打印本页]

作者: 布鲁Go    时间: 2013-11-29 23:45
标题: 为什么可以int z='D'这样赋值,而不用int z=(int)('D');
为什么可以        int z='D';    这样赋值(打印结果为68),而不用  int z=(int)('D');
是自动强转吗?这是哪个版本以后的新特新吗?还是一开始的jdk1.0就这样?

作者: 冯晓骏    时间: 2013-11-29 23:51
  1.                 int i = 'D';
  2.                 int k = (int)('D');
  3.                 System.out.println(i);
  4.                 System.out.println(k);
复制代码

我是可以的,两种都可以
作者: 不抛弃不放弃    时间: 2013-11-29 23:54
int z='D';    这里D是个字符 ,而字符对应的有自己的unicode值  也就是68,所以赋给z的是68而不是字符D,这个是由jvm完成呢,
作者: 段光宇    时间: 2013-11-30 00:01
int z='D',这里D是一个ASC码,底层转为int值并赋给int变量z,正确
int z=(int)('D'); 这里D是一个字符串形式,其值不能赋给int变量,错误
作者: 殷挥笔    时间: 2013-11-30 00:54
int z='D';是将D的ASC码值赋给z。
int z=(int)('D');这里的'D'是一个字符char类型,赋值动作是将字符D强转成int类型,讲'D'的码值赋给z,此
                     赋值操作也是正确的
记住,只能将字符char类型的强转成int类型,String类型不能强转为强转为int类型。

另外一中将字符串String类型强转为int类型的方法是:
int a = Integer.parseInt("123"); 不过此方法强转的字符串类型只能是数字,例如:"123"这种,不能是字母,文字,符号等。不然会抛NumberFormatException异常。
作者: 布鲁Go    时间: 2013-11-30 07:42
段光宇 发表于 2013-11-30 00:01
int z='D',这里D是一个ASC码,底层转为int值并赋给int变量z,正确
int z=(int)('D'); 这里D是一个字符串形 ...

不是,两种都可以的。
作者: 布鲁Go    时间: 2013-11-30 07:44
不抛弃不放弃 发表于 2013-11-29 23:54
int z='D';    这里D是个字符 ,而字符对应的有自己的unicode值  也就是68,所以赋给z的是68而不是字符D, ...

好的,谢谢
作者: 布鲁Go    时间: 2013-11-30 07:44
殷挥笔 发表于 2013-11-30 00:54
int z='D';是将D的ASC码值赋给z。
int z=(int)('D');这里的'D'是一个字符char类型,赋值动作是将字符D强 ...

回答的好详细,谢谢。。。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2