2015-07-15 4 views
-2

Я изучаю книгу «Учебник по Java» 6-го издания. Я побежал через этот пример:В чем смысл этого выражения в Java?

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; 
} 

Мой вопрос: что точный смысл конкретного синтаксиса используется для для цикла? И, что это означает, если условие «?» и ":"?

+0

Я голосующий, чтобы закрыть этот вопрос как не по теме, потому что здесь нечего исправлять. – rkosegi

+0

Читайте о Тернар оператор. – Sandeep

+0

Мне хотелось бы понять смысл синтаксиса. Я не думаю, что это оффтоп – Afe

ответ

1

for (initialization ; condition ; incrementation) { ... } нормальный синтаксис для цикла. Если вы этого не хотите, вы можете оставить поле инкремента пустым. Но будьте осторожны, поскольку это может вызвать бесконечные петли. То, как выглядит ваш цикл - без части инкремента.

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() оператор принимает его в качестве условия.

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 
Смежные вопросы