所做的修改恰好显示了有效代码与无效代码之间的区别。
此检查始终评估 两个 条件,如果
str为null 则抛出异常:
if (str == null | str.length() == 0) {而这(使用
||代替
|)是 短路的 -如果第一个条件求值为
true,则第二个条件不求值。
有关JLS的说明,请参见JLS的15.24
节;有关二进制文件
||,请参见15.22.2节
|。不过,第15.24节的简介很重要:
条件或运算符|| 运算符就像| (第15.22.2节),但仅当其左侧操作数的值为false时才评估其右侧操作数。



