牛客这题第一次做的时候我以为输出是 1 1,实际输出是1.0 1
后来才知道三元操作符还有类型转换这一说
public static void main(String[] args) {
Object o1 = true ? new Integer(1) : new Double(2.0); Object o2; if (true) {
o2 = new Integer(1); } else {
o2 = new Double(2.0); } System.out.print(o1); System.out.print(" "); System.out.print(o2); }
自动类型转换
1.如果三元操作符的左边明确写了表达式结果类型,那么右边的值会按照该类型转换
double a = true ? 54 : 100; System.out.println(a); //输出为54.0
2.如果没有显示规定表达式结果类型,则两个操作数按照类型大的范围转换
System.out.println(false ? 54.0 : 100); //输出为100.0
//但也有个小疑惑 char a = 'a'; int i= 96; System.out.println(true ? 'a' : i); //输出为97 //但下面这样写输出为'a' System.out.println(true ? 'a' : 100);
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/178592.html原文链接:https://javaforall.net
