A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

为什么可以        int z='D';    这样赋值(打印结果为68),而不用  int z=(int)('D');
是自动强转吗?这是哪个版本以后的新特新吗?还是一开始的jdk1.0就这样?

评分

参与人数 1技术分 +1 收起 理由
简★零度 + 1 鼓励有木有!

查看全部评分

7 个回复

倒序浏览
  1.                 int i = 'D';
  2.                 int k = (int)('D');
  3.                 System.out.println(i);
  4.                 System.out.println(k);
复制代码

我是可以的,两种都可以
回复 使用道具 举报
int z='D';    这里D是个字符 ,而字符对应的有自己的unicode值  也就是68,所以赋给z的是68而不是字符D,这个是由jvm完成呢,
回复 使用道具 举报
int z='D',这里D是一个ASC码,底层转为int值并赋给int变量z,正确
int z=(int)('D'); 这里D是一个字符串形式,其值不能赋给int变量,错误
回复 使用道具 举报
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异常。

评分

参与人数 1技术分 +1 收起 理由
简★零度 + 1 赞一个!

查看全部评分

回复 使用道具 举报
段光宇 发表于 2013-11-30 00:01
int z='D',这里D是一个ASC码,底层转为int值并赋给int变量z,正确
int z=(int)('D'); 这里D是一个字符串形 ...

不是,两种都可以的。
回复 使用道具 举报
不抛弃不放弃 发表于 2013-11-29 23:54
int z='D';    这里D是个字符 ,而字符对应的有自己的unicode值  也就是68,所以赋给z的是68而不是字符D, ...

好的,谢谢
回复 使用道具 举报
殷挥笔 发表于 2013-11-30 00:54
int z='D';是将D的ASC码值赋给z。
int z=(int)('D');这里的'D'是一个字符char类型,赋值动作是将字符D强 ...

回答的好详细,谢谢。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马