zoukankan      html  css  js  c++  java
  • java基础感觉白学了

    且看代码:
    char x = 'X';
    int i = 0;
    System.out.println(true ? x : 0);// 1
    System.out.println(true ? x : i);// 2
    

     运行结果:

    X
    88
    为什么会出现上面这种情况?

    确定条件表达式结果类型的规则有以下3点:

      1 如果表达式1和表达式2操作数具有相同的类型,那么它就是条件表达式的类型。

      2 如果一个表达式的类型是byte、short、char类型的,而另外一个是int类型的常量表达式,且它的值可以用类型byte、short、char三者之一表示的,那么条件表达式的类型就是三者之一

      3 否则,将对操作数类型进行二进制数字提升,而条件表达式的类型就是第二个和第三个操作数被提升之后的类型

    这时我们发现:

    注释1中,按照规则2来看,0是int类型常量表达式,返回结果就是x变量的类型,即char类型;

    注释2中,按照规则3来看,x变量和i变量类型不一致,提升后的类型就变成了int,即输出char类型对应的int值。

    这是一个坑,初学者甚至是工作经验不是很长的程序员都应该注意,要不然真感觉java1基础白学了。

  • 相关阅读:
    http服务读取配置文件,交叉编译
    etcd增删改查
    初始
    20141017--类型String类
    20141017--异常语句try-catch
    20141017--循环语句whlie,do
    20141017--循环语句for 穷举
    20141016--for 菱形
    20141016--for 兔子
    20141015--for语句1
  • 原文地址:https://www.cnblogs.com/tobiasy/p/9179072.html
Copyright © 2011-2022 走看看