本人即将大四,第一次进公司实习,刚看项目 就看到了一行代码 稍有不解 于是自己测试了下,
附代码:
public Integer getPage() {
return page == null || page < 1 ? 1 : page;
}
一个简单的判断页数的函数,由于长时间没巩固基础知识,忘了这边双目和三目运算符的知识点,于是自己写了个Demo来看看这句话的运行流程;
public static void main(String[] args) {
Integer b=null;
int c= b==null||b<1?1:b;
System.out.println(c);
}
运行结果:1
修改b的值:public static void main(String[] args) {
Integer b=3;
int c= b==null||b<1?1:b;
System.out.println(c);
}
运行结果:3
所以应该是从左至右运行,然后我不信邪的给右边的代码部分加上小括号,看能不能强制改变运算流程,附代码:
public static void main(String[] args) {
Integer b=3;
int c= b==null||(b<1?1:b);
System.out.println(c);
}
,然后就报错了:The operator || is undefined for the argument type(s) boolean, int;
分析了下原因,||的两边应该是boolean型,如果加上这个()则 || 的右边变成了int型,所以报错,问题解决。