先看一个例子:

package com.test;

public class TernaryOperator {
public static void main(String[] args) { int temp = 80;
String s1 = String.valueOf(temp<100?90:100);
String s2 = String.valueOf(temp<100?90:100.0); System.out.println(s1);
System.out.println(s2);
System.out.println(s1.equals(s2));
}
}

结果:

看一下结果发现两个值不相等,这里有疑问了,两个表达式都是true,都是取第一个操作数的值,为什么第二个值确实90.0?

这里就仔细看一下:

第一个表达式 : 两个操作数都是int,所以返回值肯定是int

第二个表达式:第一个操作数是int,第二个操作数是float

试想一下,表达式不可能在true时返回int,在false时返回float,编译器是不允许的,所以进行了类型转换;

PS:三目运算符尽量保持两个操作数的类型一致,避免出现异常

附:转换规则

  1. 若两个操作数不可转换,则不做转换,返回值为Object类型
  2. 若两个操作数是明确的类型,按照基础数据类型的转换规则来处理(不包括boolean)
    转换规则:从存储范围小的类型到存储范围大的类型。
    具体规则为:byte→short(char)→int→long→float→double
  3. 若两个操作数,一个是数字S,一个是表达式,类型标记为T,若S在T的范围之内,则S转换为T类型,若S在T的范围之外,则T转换为S类型
  4. 若两个操作数都是直接量数字(字面量),则返回值为范围较大的

提高java编程质量 - (三)三目运算符的两个操作数类型尽量一致的更多相关文章

  1. Java之戳中痛点 - (3)三目运算符的两个操作数类型尽量一致

    先看一个例子: package com.test; public class TernaryOperator { public static void main(String[] args) { in ...

  2. 提高java编程质量 - (四)i++ 和 ++i 探究原理

    先看一个例子: package com.test; public class AutoIncrement { public static void main(String[] args) { int ...

  3. 提高java编程质量 - (二)取余用偶判断,不要用奇判断

    取余判断原则:取余用偶判断,不要用奇判断 先看一个 程序: package com.test; import java.util.Scanner; public class t1 { public s ...

  4. 提高java编程质量 - (一)易变业务使用脚本语言编写

    脚本语言的3大特征: 1.灵活:脚本语言一般是动态类型,可以不声明变量类型直接使用,也可以在运行期改变类型:2.便捷:脚本语言是解释性语言,在运行期变更非常方便,而不用重启服务3.简单:脚本语言语法比 ...

  5. 提高java编程质量 - (五)switch语句break不能忘以及default不同位置的用法

    先看一段代码: public class Test{ public static void main(String[] args){ System.)); } } public static Stri ...

  6. 提高Java代码质量的Eclipse插件之Checkstyle的使用详解

    提高Java代码质量的Eclipse插件之Checkstyle的使用详解 CheckStyle是SourceForge下的一个项目,提供了一个帮助JAVA开发人员遵守某些编码规范的工具.它能够自动化代 ...

  7. 斐波那契数列-java编程:三种方法实现斐波那契数列

    题目要求:编写程序在控制台输出斐波那契数列前20项,每输出5个数换行 斐波那契数列指的是这样一个数列:1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, … 这个数列 ...

  8. 提升Java代码质量(三)

    Item7:覆盖equals时需要遵守通用约定 在我们日常开发过程中,重写equals是比较常用的,但存在许多不合适的覆盖方式导致错误,最好的避免方法就是不去重写equals.但有时我们的业务又需要建 ...

  9. 提高Java代码质量的Eclipse插件之Checkstyle的使用具体解释

    CheckStyle是SourceForge下的一个项目,提供了一个帮助JAVA开发者遵守某些编码规范的工具.它可以自己主动化代码规范检查过程.从而使得开发者从这项重要可是枯燥的任务中解脱出来. Ch ...

随机推荐

  1. java类集框架(ArrayList,LinkedList,Vector区别)

    主要分两个接口:collection和Map 主要分三类:集合(set).列表(List).映射(Map)1.集合:没有重复对象,没有特定排序方式2.列表:对象按索引位置排序,可以有重复对象3.映射: ...

  2. 任务十二:学习CSS 3的新特性

    任务目的 学习了解 CSS 3 都有哪些新特性,并选取其中一些进行实战小练习 任务描述 实现 示例图(点击查看) 中的几个例子 实现单双行列不同颜色,且前三行特殊表示的表格 实现正常状态和focus状 ...

  3. C#,VB.NET如何将Word转换为PDF和Text

    众所周知,Word是我们日常工作中常用的办公软件之一,有时出于某种需求我们需要将Word文档转换为PDF以及Text.那么如何以C#,VB.NET编程的方式来实现这一功能呢? 下面我将分开介绍如何运用 ...

  4. 初识Android触摸事件传递机制

    前言 今天总结的一个知识点是Andorid中View事件传递机制,也是核心知识点,相信很多开发者在面对这个问题时候会觉得困惑,另外,View的另外一个难题滑动冲突,比如在ScrollView中嵌套Li ...

  5. JS作用域就这么几句话

    JavaScript的作用域一直以来是前端开发中比较难以理解的知识点,对于JavaScript的作用域主要记住几句话,走遍天下都不怕... 一.“JavaScript中无块级作用域” 在Java或C# ...

  6. 永久设置mysql中文乱码问题

    1.进入mysql的命令窗口 输入 show variables like '%char%'; 查看当前编码是否为UTF-8 2.在上述命令的结果中我们可以看到Wamp的安装目录,找到这一目录,在里面 ...

  7. 关于phpMyAdmin表数据不能编辑更改的问题

    今天在使用phpMyAdmin更改表中的数据时, 发现表的前面没有编辑.复制.删除这些内容, 于是我很奇怪,上网查了查,终于找到了一个解决的办法, 原来是我的这个表没有主键,于是我点击表 的 结构 , ...

  8. poj3020二分图匹配

    The Global Aerial Research Centre has been allotted the task of building the fifth generation of mob ...

  9. HDU_1009_FatMouse' Trade

    FatMouse' Trade Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  10. Linux之定时任务

    定时任务Crond介绍 Crond是linux系统中用来定期执行命令/脚本或指定程序任务的一种服务或软件,一般情况下,我们安装完Centos5/6 linux操作系统之后,默认便会启动Crond任务调 ...