我正在学习“The Java Tutorial”第6版。 我试过这个例子:
public int indexOf(E e) {
for (ListIterator<E> it = listIterator(); it.hasNext(); )
if(e == null ? it.next() == null : e.equals(it.net()))
return it.previousIndex();
return -1;
}
我的问题是:用于for循环的特定语法的确切含义是什么?并且,在if条件中它是什么意思“?”和“:”?
答案 0 :(得分:1)
举个简单的例子,
minVal = (a < b) ? a : b;
在此代码中,如果变量a
小于b
,则为minVal
分配值a
;否则,minVal
的值为b
。
你的案子
if(e == null ? it.next() == null : e.equals(it.net()))
意思,
if e== null,
execute it.next() == null // compares and return true/false
else
execute e.equals(it.net()) // compares and return true/false
答案 1 :(得分:1)
for (initialization ; condition ; incrementation) { ... }
是一个正常的for循环语法。如果不需要,可以将增量部分留空。但要小心,因为它可能会导致无限循环。这就是你的循环的样子 - 没有增量部分。
e == null ? it.next() == null : e.equals(it.net())
是一个简单的三元运算符:
IF condition ? THEN : ELSE
重写它意味着这样的事情:
if(e == null) {
return it.next == null
} else {
return e.equals(it.net())
}
当它返回一个布尔值时,封闭的if()
语句接受它作为条件。