&<-验证两个操作数
&&<-停止评估第一个操作数是否为false,因为结果为false
(x != 0) & (1/x > 1)<-这意味着先评估
(x != 0)然后再评估
(1/x > 1)&。问题是对于x = 0,这将引发异常。
(x != 0) && (1/x > 1)<-这意味着求值,
(x != 0)并且只有当它为true时才求值,
(1/x > 1)因此,如果x = 0,则这是绝对安全的,并且如果(x!= 0)求值为false,则整个对象都将直接求为false没有评估(
1/x > 1)。
编辑:
exprA | exprB<-这意味着评估
exprA再评估
exprB,然后做|。
exprA || exprB<-这意味着进行评估,
exprA并且只有在
false随后进行评估
exprB并进行||。



