Подтвердить что ты не робот

Два оператора IF относительно одного оператора И

В java мне интересно, какой из них более эффективен:

if(something)
   {
      if(something)
    }

или

if((something) &&(something))

Мне было интересно, каковы достоинства для производительности. Какие решения лучше подходят для разных объектов данных.

4b9b3361

Ответ 1

Производительность будет одинаковой. Первый оператор будет оценен, и только если он будет истинным, будет оценен второй.

Это просто вопрос читаемости. Если есть что-то, что нужно сделать, если первое утверждение истинно, независимо от второго, я бы пошел с обоими в той же строке, что яснее, что оба утверждения должны быть истинными, чтобы что-то произошло. Вам также необязательно делать отступ без необходимости.

Ответ 2

В Java, && короткие замыкания. Это означает, что если первое условие в a && b оценивается как false, второе условие даже не оценивается.

Следовательно, они почти наверняка приводят к идентичному коду, и нет разницы в производительности.

Из двух форм вы должны использовать любые результаты с более четким кодом.

Ответ 3

В целом они одинаковы. Если первое оценивается как ложное, второе не будет оцениваться. Если вы хотите, чтобы что-то произошло, если первое ложное, вы должны использовать отдельный if-statement. В противном случае, если вы хотите только убедиться, что оба являются истинными и ничего не делают, если один из них возвращает false, вы можете использовать второй вариант.

Ответ 4

Обратите внимание, что оператор && в Java является оператором короткого замыкания. Это означает, что если выражение в левой части && равно false, Java не будет пытаться оценить выражение в правой части, потому что результат будет false, независимо от того, что выражение правой стороны оценивается.

Таким образом, эффективность этих двух конструкций будет одинаковой.

Обратите внимание, что Java также имеет оператор &. Это не короткое замыкание: оно всегда будет оценивать выражения с обеих сторон &.

Ответ 5

Я не знаю, но, по интуиции, я думаю, что после компиляции в байт-код нет никакой разницы...