• 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基础白学了。

  • 相关阅读:
    VUE组件间传参
    JS-03 (RegExp对象&字符串总结)
    JS-02 (字符串的正则函数)
    理解 C++ 的 Memory Order
    GCC的原子操作函数
    barrier内存屏障
    tcp重传机制,流量控制,拥塞控制
    TCP 的拥塞控制
    Monitoring and Tuning the Linux Networking Stack: Receiving Data
    kernel网络之软中断
  • 原文地址:https://www.cnblogs.com/tobiasy/p/9179072.html
Copyright © 2020-2023  润新知