Java之戳中痛点 - (3)三目运算符的两个操作数类型尽量一致
先看一个例子:
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:三目运算符尽量保持两个操作数的类型一致,避免出现异常
附:转换规则
- 若两个操作数不可转换,则不做转换,返回值为Object类型
 - 若两个操作数是明确的类型,按照基础数据类型的转换规则来处理(不包括boolean)
转换规则:从存储范围小的类型到存储范围大的类型。
具体规则为:byte→short(char)→int→long→float→double - 若两个操作数,一个是数字S,一个是表达式,类型标记为T,若S在T的范围之内,则S转换为T类型,若S在T的范围之外,则T转换为S类型
 - 若两个操作数都是直接量数字(字面量),则返回值为范围较大的
 
Java之戳中痛点 - (3)三目运算符的两个操作数类型尽量一致的更多相关文章
- 提高java编程质量 - (三)三目运算符的两个操作数类型尽量一致
		
先看一个例子: package com.test; public class TernaryOperator { public static void main(String[] args) { in ...
 - Java之戳中痛点 - (4)i++ 和 ++i 探究原理
		
先看一个例子: package com.test; public class AutoIncrement { public static void main(String[] args) { int ...
 - Java之戳中痛点 - (7)善用Java整型缓存池
		
先看一段代码: package com.test; import java.util.Scanner; public class IntegerCache { public static void m ...
 - Java之戳中痛点 - (6)避免类型自动转换,例如两个整数相除得浮点数遇坑
		
先来看一个例子: package com.test; public class calculate { /** * 光速30万公里/秒 */ public static final int LIGHT ...
 - Java之戳中痛点 - (1)易变业务使用脚本语言编写
		
脚本语言的3大特征: 1.灵活:脚本语言一般是动态类型,可以不声明变量类型直接使用,也可以在运行期改变类型:2.便捷:脚本语言是解释性语言,在运行期变更非常方便,而不用重启服务3.简单:脚本语言语法比 ...
 - Java之戳中痛点 - (8)synchronized深度解析
		
概览: 简介:作用.地位.不控制并发的影响 用法:对象锁和类锁 多线程访问同步方法的7种情况 性质:可重入.不可中断 原理:加解锁原理.可重入原理.可见性原理 缺陷:效率低.不够灵活.无法预判是否成功 ...
 - Java之戳中痛点 - (5)switch语句break不能忘以及default不同位置的用法
		
先看一段代码: public class Test{ public static void main(String[] args){ System.)); } } public static Stri ...
 - Java之戳中痛点 - (2)取余用偶判断,不要用奇判断
		
取余判断原则:取余用偶判断,不要用奇判断 先看一个 程序: package com.test; import java.util.Scanner; public class t1 { public s ...
 - java 8 Stream中操作类型和peek的使用
		
目录 简介 中间操作和终止操作 peek 结论 java 8 Stream中操作类型和peek的使用 简介 java 8 stream作为流式操作有两种操作类型,中间操作和终止操作.这两种有什么区别呢 ...
 
随机推荐
- R语言学习笔记(六): 列表及数据框的访问
			
List R语言中各组件的名称叫做标签(tags),访问列表有3种方法: j$salary 通过标签名字访问,只要不引起歧义,可以只写出前几个字母. j[['sal']] 夹在两个中括号时引号里的标签 ...
 - TensorFlow深层神经网络常用方法
			
深度学习所示深层神经网络的代名词,重要特性:多层.非线性. 若只通过线性变换,任意层的神经网络模型与单层神经网络模型的表达能力没有任何区别,这是线性模型的局限性.对于线性可分的问题中,线性模型可解决, ...
 - ULINE(插入水平线)
			
WRITE 'This is Underlined'. ULINE. 输出结果: This is Underlined. ———————————————————
 - 开启一个项目如何上传到git
			
1.(先进入项目文件夹)通过命令 git init 把这个目录变成git可以管理的仓库 git init 2.把文件添加到版本库中,使用命令 git add .添加到暂存区里面去,不要忘记后面的小数点 ...
 - Eclipse+APKTool动态调试APK
			
1. 所需工具 Eclipse. Apktool v2.0.6. 安卓SDK工具. 2. 重编译APK apktool d -d -o test test.apk 此时当前test目录下就是apkto ...
 - 第七篇Python基本数据类型之数字&字符串&布尔值
			
数字 写在最前,必须要会的:int() 整型 Python3里无论数字多长都用int表示,Python2里有int和Long表示,Long表示长整型 有关数字的常用方法,方法调用后面都必须带括号() ...
 - cocos2d-x的坐标和节点层级
 - 09-Mysql数据库----外键的变种
			
本节重点: 如何找出两张表之间的关系 表的三种关系 一.介绍 因为有foreign key的约束,使得两张表形成了三种了关系: 多对一 多对多 一对一 二.重点理解如果找出两张表之间的关系 分析步骤: ...
 - python第三天(dictionary应用)转
			
1.题目: python实现英文文章中出现单词频率的统计 前言: 这道题在实际应用场景中使用比较广泛,比如统计历年来四六级考试中出现的高频词汇,记得李笑来就利用他的编程技能出版过一本背单词的畅销书 ...
 - LeetCode 2——两数相加
			
1. 题目 2. 解答 循环遍历两个链表 若两个链表都非空,将两个链表结点的值和进位相加求出和以及新的进位 若其中一个链表为空,则将另一个链表结点的值和进位相加求出和以及新的进位 然后将每一位的和添加 ...