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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 静水流华 中级黑马   /  2013-12-7 15:03  /  2255 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我不懂的地方是红线标注的地方,(char)(n2 - 10 + ‘A’)被强制转换后,运算后在DOS里显示的还是数字不是字母。
毕老师虽然简单的说了一下,但是我还是不是很明白,强制转换后怎么又被提升了

QQ拼音截图未命名.png (58 KB, 下载次数: 78)

QQ拼音截图未命名.png

评分

参与人数 1技术分 +1 收起 理由
贺奕凯 + 1

查看全部评分

5 个回复

倒序浏览
本帖最后由 几番意难相付 于 2013-12-7 16:09 编辑

原本 A 为一个char类型的字符 因为将它带入到了运算中 也就是加了n2-10的结果  这样char A这个字符就会转型为int 才能得出int的结果
再将(n2-10+'A')的结果转为char类型 也就是得出(n2-10+'A')这个表达式计算出的结果
也就是将得到这个结果转换为对应的asci值代表的字符

举个例子 假设要求A这个字符的下一个字符是多少
char ch1='A';              //定义一个字符 需要求出这个字符的下一个字符
int x='A'+1;                 //定义一个int类型的变量x 用于计算ch1+1的结果
char ch2=(char)x;      //将结果转换为char类型

评分

参与人数 1技术分 +1 收起 理由
贺奕凯 + 1

查看全部评分

回复 使用道具 举报
哥们,很简单的,多看看视频就ok了
3元运算符:n2>9?  :
类型提升与强转问题;将int类型转换成字符,;

n2-10+‘A’:打印的为3对吧,因为n2小于9,直接返回n2

评分

参与人数 1技术分 +1 收起 理由
贺奕凯 + 1

查看全部评分

回复 使用道具 举报
  1. public static void main(String[] args)
  2.         {
  3.                 int n = 8;
  4.                 float m = 12.12f;
  5.                 System.out.println(n>5?'A': m);
  6.         }
  7.         //输出结果为:65.0
复制代码
你可以这么理解:'A':m是一个表达式,'A'是char型,m是float,所以'A'自动提升为float。

评分

参与人数 1技术分 +1 收起 理由
贺奕凯 + 1

查看全部评分

回复 使用道具 举报
谢文斌 发表于 2013-12-7 16:18
你可以这么理解:'A':m是一个表达式,'A'是char型,m是float,所以'A'自动提升为float。
...

我想让它输出结果为一个字母
回复 使用道具 举报
静水流华 发表于 2013-12-8 08:50
我想让它输出结果为一个字母

那就只能:
  1. int n = 8;
  2. float m = 12.12f;
  3. if(n>5)
  4. System.out.println("A");
  5. else
  6. System.out.println(m);

复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马