2014-09-18 2 views
1

Hello
Из интереса, при программировании в java, было бы более экономичным использовать оператор if или оператор switch для чего-то, что могло иметь только два результата.

Например:Оператор переключения Java с двумя случаями или оператором if?

char c = 'a'; 
if (c == 'a') { 
    //do something 
} 
else if (c == 'A') { 
    //do something else 
} 

или

char c = 'a'; 
switch (c) { 

    case 'a': 
     //do something 
     break; 

    case 'A': 
     //do something else 
     break; 
} 



Какой бы лучше?

+3

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

+0

Если у него может быть только 2 результата, было бы лучше иметь только «else» вместо else if? – Wabonano

+0

Этот вопрос уже задан несколько раз. См. Http://stackoverflow.com/questions/2086529/what-is-the-relative-performance-difference-of-if-else-versus-switch-statement-i –

ответ

2

Ответ действительно зависит от интереса использования. Что я обычно делаю, если мои условия больше (3 или выше), я перехожу к коммутатору. В противном случае я просто использую if-else-if.

Оператор переключения Java с двумя случаями или если утверждение?

Для вашего случая первое достаточно хорошее, это , если иное не указано. Если таких случаев больше, предпочитайте переключатель. Это повышает читаемость по сравнению с уродливым хорошим количеством if else's.

1

Идите, если еще, если вы уверены, что у вас всего 2 варианта. Если вы не уверены, и это более крупный проект, над которым вы работаете, я бы пошел с корпусом коммутатора, потому что его легче было добавлять в случае необходимости.

1

В вашем случае с двумя значениями оператор if-else работает быстрее, чем оператор switch. Но это не всегда так, особенно если у вас есть много случаев для тестирования. Вы найдете более подробную информацию здесь:

Why switch is faster than if

PS: Одна вещь, которую я заметил, но, возможно, необходим код: если элемент для тестирования может иметь только два значения, если-иначе должен лучше, чем if-else, если.

Надеюсь, это поможет.

0

switch утверждение часто считается более подвержен ошибкам, чем if-else т.е. забывая default случай или break. В случае короткого условия говорят два результата: if-else, вероятно, предпочтительнее, маловероятно, что будет какая-то заметная разница в скорости.

Помимо, Роберт Мартин в Clean CodeP37 выдвигает хороший аргумент, почему switch заявления не очень ООП.

Смежные вопросы