java if语句如何处理空值?
在使用jasper soft reports时,我偶然发现了这种奇怪的行为,我想解释一下,因为我对Java知之甚少 基本上,当表达式:java if语句如何处理空值?,java,jasper-reports,Java,Jasper Reports,在使用jasper soft reports时,我偶然发现了这种奇怪的行为,我想解释一下,因为我对Java知之甚少 基本上,当表达式: ($P{Parameter_name}!=0 || $P{Parameter_name}==null) ? true : false ->这返回false ($P{Parameter_name}==null || $P{Parameter_name}!=0) ? true : false ->这是真的 唯一的区别是方程式的顺序,但从逻辑上讲,它不应该造成差异
($P{Parameter_name}!=0 || $P{Parameter_name}==null)
? true : false
->这返回false
($P{Parameter_name}==null || $P{Parameter_name}!=0)
? true : false
->这是真的
唯一的区别是方程式的顺序,但从逻辑上讲,它不应该造成差异。
参数为null
例如,我知道SQL不关心顺序,总是用这样一个简单的or语句来计算true。如果参数为
null
,则在求值时会得到NullPointerException
$P{Parameter_name}!=0
也许这个异常会阻止Jasper检查第二个条件
在第二个版本中,测试
$P{Parameter_name} == null
将被评估为true,这意味着
$P{Parameter_name} != 0
根本不会被评估(也不会提出NPE)这不是Java代码,那么你为什么要关心Java做什么呢?除了Jasper没有向我返回任何错误,而是将其视为一个错误值,我不理解。