最近在阅读一本书,看见里面有一条这样的建议:三元操作符两边的操作数类型尽量一致,这样可以减少问题的发生。于是在eclipse写了个测试:
package org.ovuola.general.util.config;
public class OperationTest {
public static void main(String[] args) {
int i = 80;
String s = String.valueOf(i < 100 ? 90 : 100);
String s1 = String.valueOf(i < 100 ? 90 : 100.0);
System.out.println(s.equals(s1));
}
}
初一看,因为i是80小于100,条件为true返回90,再返回字符串,应该是s与s1相等呀,结果一运行发现,false.纳尼?一想,原来,问题就出在100和100.0上,第一个i两边都是int类型,而s1中两边操作数类型不一致,90是in类型,100.0是float类型,返回的是float类型,那结果当然是false.