2014-04-07 3 views
-1

둘 사이의 차이점을 찾으려합니다. 조건여러 개의 && 사이의 차이 및 중첩 된 경우

if(a>b){ 
    if(b>c){ 
     //do some thing`enter code here` 
    } 
} 

빨리 사용하는되어야하는 경우, 중첩 용

if(a>b && b>c){ 
    // do some thing 
} 

: 다음은 여러 & & 연산자 예

이다. 둘의 차이점은 무엇입니까? 복잡성이 증가 할 때까지 성능을 알고 싶습니다.

+0

@JRowan [Oracle.com] (http://docs.oracle.com/javase/tutorial/java/nutsandbolts/op2.html)을 참조하십시오. 여러 _ && _를 결합하면 두 번째는 첫 번째가 참인 경우에만 평가됩니다 , 두 번째가 참이면 세 번째가 참이다. – ifloop

답변

0

는 & & 운영자가 코드를 이해하기 간단하고 쉽게 만 약간의 성능 차이 말인가 여러가

0

이 두 동일합니다 나는 그들이 또한 동일한 어셈블리로 컴파일 추정

if (condition1) block1 
else if (condition2) block2 

if (condition1) block1 
else 
{ 
    if (condition2) block2 
} 

, 그래서 차이가 없어야합니다.

0

차이점은 주로 가독성과 유지 보수에 있습니다.

2 개의 논리적 조건을 병합하면 일반적으로 그 사이에 의미 론적 관계가 있어야합니다.

고려해야 할 또 다른 사항은 범위 지정입니다. 중첩 된 if는이 영역에서 유연성을 제공합니다.

0

실제로 둘 다 동일합니다. 어느 쪽이든, 적어도 하나의 조건을 테스트해야합니다. 두 예 모두에서 ab보다 작 으면 평가가 종료되고 프로그램이 다음 코드 비트로 진행합니다. 또한 최신 자바 컴파일러는이 두 예제를 실제로 동일한 바이트 코드로 컴파일합니다. 따라서 귀하의 질문에 답하기 위해 어느 쪽이든 괜찮습니다. 다른 쪽보다 나은 실적을 보이지는 않습니다. 저는 개인적으로 첫 번째 예제를 사용합니다. 왜냐하면 더 작고 읽기가 쉽기 때문입니다.

0

첫 번째 방법이 표준 방법이라고 생각합니다.

if(a>b && b>c) 
{ 
// do some thing 
} 

줄 수를 줄입니다. 즉, (DRY) 원칙을 따르지 않음을 의미합니다. Java 실행은 입니다.

0

ANSI C는 논리 AND 버전 (& &)의 경우 특정 작업 순서를 요구하지 않습니다. 즉, 두 번째 테스트가 첫 번째 테스트의 결과에 따라 다를 경우 두 결과가 다를 수 있습니다.

연산자 우선 순위 문제가 발생하지 않도록 여분의 대괄호로 각 테스트를 묶는 것이 좋습니다.