说个Java三目运算坑

前几日,写代码,用到三目运算,判断一个double,如果大于1则返回int,小于1则返回double,可是依照下面的代码,本应该返回int,即1,但是返回的始终是1.0。

Double d = 1.01;
System.out.println(d > 1 ? d.intValue() : d); // 1.0

当时还在想 d.intValue()返回难道不是 int吗,于是试了下面的代码,结果的确返回的int,即1。

Integer i = d.intValue();
System.out.println(i); // 1

想了好久,突然想到,三目运算的数据类型是相同的,也就是说后面返回的结果和第一个数的类型是一致的!!!第一个数是double,所以返回的结果也会是double,即1.0。

是我自己忘记了…