zoukankan      html  css  js  c++  java
  • Java三元运算符——类型必须一致

    一、分析

    当你使用三元运算符,两边的操作数的类型不一致的时候,这就涉及到三元操作符的转换规则:

    1. 若果两个操作数不可转换,则不做转换,返回值为Object类型。
    2. 若两个操作数是明确类型的表达式(比如变量),则按照正常的二进制数字来转换。int类型转换为long类型,long类型转换成float类型。
    3. 若两个操作数中有一个是数字S,另外一个是表达式,且其类型为T,那么,若数字S在T的范围内,则转换为T类型;若S超过了T的范围,则T转换为S类型。
    4. 若两个操作数字都是直接数字。则返回值类型为范围较大者。

    二、场景

    分析,两个三元操运算,条件都为真,返回第一个值,结果“两者是否相等:true”。结果果真如此吗?结果“两者是否相等:false”!

     

    问题出在于100和100.0这两个数字上:

    在变量s中,第一个操作数(90)和第二个操作数(100)都是int类型,类型相同,返回的是int型的90;

    在变量s1中,第一个操作数类型为(90)int类型,第二个操作数是(100.0)浮点型。 

    可是三元操作符必须返回同一个数据,而且类型要确定,不可能条件为真返回int类型,条件为假返回float类型,编译器是不会允许的,所以进行类型转换了。int转换成90.0,也就是所返回值是90.0当然和90不相等了。 

    三、建议

    保证三元操作符中的两个操作类型一致,即可减少错误的发生。

    转自http://blog.csdn.net/yu_rong/article/details/49474141

  • 相关阅读:
    复杂模拟 | 1017 模拟N个顾客M个柜台进行排队
    徒手实现lower_bound和upper_bound
    树状数组 | 1057
    动态规划 | 最长回文子串 1040
    动态规划 | 背包问题 1068
    动态规划 | 对输入进行hash处理的LIS 1045
    总结那些有默认margin,padding值的html标签
    javascript 的七种基本数据类型
    牛客网笔试题整理
    JavaScript 的数据结构与算法
  • 原文地址:https://www.cnblogs.com/kunpengv5/p/8250013.html
Copyright © 2011-2022 走看看