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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王召轩 中级黑马   /  2013-12-9 11:38  /  1082 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

为什么这两个的输出不同呢:Q
  1. char a ='A';
  2.                 int b =0;
  3.                 System.out.println(true ? a:0);
  4.                 System.out.println(false ? b:a);
复制代码

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

5 个回复

倒序浏览
a是字符型,b是整型。
回复 使用道具 举报
  1. //测试:
  2.                 char a ='A';
  3.         int b =0;
  4.         //char变量:int值,输出char变量对应的ASCII值,类型自动转换
  5.         System.out.println(true ? a:0);
  6.         System.out.println(true ? a:b);

  7.         System.out.println(false ? 0:a);
  8.         System.out.println(false ? b:a);
  9.         
  10.         //三元运算     char值:int值,输出char值对应的ASCII值,类型自动转换
  11.         System.out.println(true ? 'A':0);
  12.         System.out.println(true ? 'A':b);
  13.         
  14.         System.out.println(false ? 0:'A');
  15.         System.out.println(false ? b:'A');
复制代码


评分

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

查看全部评分

回复 使用道具 举报
条件操作符没用过不过这写法挺像三元表达式:
//三元表达式
        int a=0;
        //a不等于0的话a就为1否则为0
        a=a!=0?1:0;
        
       //if else
        if(a!=0){
        a=1;
        }else{
        a=0;
        }

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
设x和y分别是第二个和第三个操作数的类型,那么:
1如果x和y为同一类型,则该类型即是条件表达式的类型。
2如果从x到y存在一个隐式转换,那么y是条件表达式的类型。
3如果从y到x存在一个隐式转换,那么x是条件表达式的类型。
char a ='A'; int b =0;
System.out.println(true ? a:0);//适用于第1点  0这个值会被保存为char(因为0 可以用两个字节保存 即为char)    条件表达式结果类型转化为char
System.out.println(true ? a : 65536);//适用于第2点 65536只能被存储4个字节 即为int
System.out.println(false ? b:a);//适用于第3点 a--->b隐式转换  即b的类型为条件表达式的结果类型
这些转换有些麻烦 还不如不用

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
public class Demo {
        //低于int型的数据进行运算就都会被提升为int型
        public static void main(String[] args) {
                char a ='A';
        int b =0;
        System.out.println(true ? a:b);//65,第一个输出a被提升为int型了,因为b是int类型
        System.out.println(true ? a:0);//A,第二输出a是和0比较,0是什么类型是不清楚的,所以a类型不变了
        System.out.println(false ? b:a);//65,第三个输出b类型是int,所以a被提升到了int类型
                 

        }
}

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

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