&amp &; (그리고) 및 (또는) if 문의

나는 다음 코드:

if(!partialHits.get(req_nr).containsKey(z) || partialHits.get(req_nr).get(z) < tmpmap.get(z)){  
    partialHits.get(z).put(z, tmpmap.get(z));  
}

여기서 '은' 파르시알히츠 이스마프. &lt br&gt, , 가 처음으로 내놓은 것은 어떤 일이 벌어질 경우 가능 jave 계속 확인할 수 있는 첫 번째 기술서임을 가능 오더할 이스마프 포함되어 있지 않기 때문에, 이 때문에 진정한 기술서임을 주어진 키에 합니다 만약 두 번째 기술서임을 검사됩니다 누얼포인터렉세페시옹 내아기마저도 프레젠테이션이든 ','. 따라서 우리는 간단한 예를 들어 다음과 같은 코드를

6 284 {{{000}}} 'a' 는 'b' 의 첫 번째 사례의 경우 죽이려하겠어요 jave 확인란 거짓값 아웃하기로 'a' 는 진정한 두 번째 경우?

해결책

아니, 않을 것이라는 평가를 받았다. 그리고 이것은 매우 유용합니다. 예를 들어, if you need is not null 또는 빈 문자열을 서버인지에 테스트하려면 작성할 수 있습니다.

if (str != null && !str.isEmpty()) {
  doSomethingWith(str.charAt(0));
}

또는, 다른 길로 약

if (str == null || str.isEmpty()) {
  complainAboutUnusableString();
} else {
  doSomethingWith(str.charAt(0));
}

39, & # 39 short-circuits& # 39, 만약 우리가 didn& 없다. 자바 가상 머신 (jvm) 에, we&; d # 39 위 코드는 누얼포인터렉스티언스 많이 받습니다.

해설 (4)

Java 는 5 개의 다른 부울입니다 비교 연산자: &amp &amp &amp,, ^;;

&amp. 및 &amp &; &quot, and&quot 있다. 연산자 및 &quot or"; so 는 &quot xor&quot,, ^

단일 수준들과 확인할 상관없이 모든 매개변수에서 확인하기 전에 값뿐만 매개 변수의 값을. 더블 체크 및 그 가치를 먼저 수준들과 왼쪽 매개변수입니다 아웃하기로 'true' ('') 또는 '거짓' (',' &amp, &amp) 두 번째 남겨두십시오 그대로 둡니다. 사운드 콩필카테드? 쉬운 예를 분명히 해야 한다.

  • Examples:* 모든 것에 대해서,
 String aString = null;

및:

 if (aString != null & aString.equals("lala"))

전에 모두 매개변수입니다 평가 및 누얼포인터렉세페시옹 점검됩니다 완료되어도 될 것이며 두 번째 매개변수입니다.

 if (aString != null && aString.equals("lala"))

이 때문에 '거짓' 두 번째 매개 won& 검사됩니다 또한 첫 번째 매개변수에서 되돌려줍니다 # 39 는 '거짓' t be 체크된다면, 때문에, 그 결과 겁니다.

동일한 또는:

 if (aString == null | !aString.equals("lala"))

누얼포인터렉세페시옹 부활시켜, 고쳐주렴.

 if (aString == null || !aString.equals("lala"))

이 때문에 두 번째 매개 won& 검사됩니다 또한 첫 번째 매개변수에서 되돌려줍니다 'true' t be 체크된다면, # 39, 그 결과, '진정한' 때문에 겁니다.

39 can& 배타적 논리합 (xor), t be 최적화되었는지 의존하기 때문에, 모두 매개변수입니다.

해설 (2)

It will not be 검사했어요 없습니다. 이 행동을 호출됨 단락 평가 및 기능 등 다양한 언어로 jave.

해설 (1)

하지만, 그냥 위치를 설명하기 위해 이 모든 질문에 대한 답을 다음은 멋지구리해요 완료되니라 가져오기에서 이렇게 it& # 39 의 소스 상황보고해 움직일만 합니다. java 언어를 사양명세.

[섹션, 15 23 조건 및 연산자 (&amp &;)] [1], 다음과 같이 말합니다.

&gt. 이 &amp &; 마치 연산자입니다 &amp. (& # 167, 15.22.2) 이지만, 그 왼쪽 오른쪽 피연산자를 진정한 가치를 경우에만 피연산 함수는 평가하고 있다. [.] 첫 실행 시 왼쪽 피연산자 표현식에서는 검사됩니다 [.] 만약 결과 값은 거짓 및 오른쪽 피연산자를 표현식에서는 조건 및 표현식에서는 거짓값 가치가 없는 평가를 받았다. 만약 이 값이 true 이면 피연산 함수는 왼쪽 오른쪽 표현식에서는 검사됩니다 [.] 이 결과 값을 가치를 조건 및 표현식입니다. 따라서 &amp &; 같은 결과를 &amp 계산합니다. 켜짐이 부울입니다 피연산자로. 이 뿐 아니라 다른 오른쪽 피연산자를 작업자쪽에서 표현식에서는 조건부 검사됩니다 항상.

그리하여, [섹선에서 조건부 또는 15 24, 연산자 ()] [2], 다음과 같이 말합니다.

&gt. 마치 연산자에서 (& # 167, 15.22.2) 이지만, 그 값을 왼쪽 오른쪽 피연산자를 피연산 함수는 거짓값 경우에만 평가하고 있다. [.] 첫 실행 시 왼쪽 피연산자 표현식에서는 검사됩니다. [.] 만약 결과 값은 진정한 가치가 없는 것은 및 오른쪽 피연산자를 조건부 또는 표현식에서는 표현식에서는 평가를 받았다. 이 경우, 그 값을 왼쪽 오른쪽 표현식에서는 피연산 함수는 거짓값 검사됩니다. [.] 이 결과 값을 가치를 조건부 또는 표현식입니다. 따라서 같은 결과를 켜짐이 부울입니다 또는 부울입니다 피연산자로 계산합니다. 이 뿐 아니라 다른 오른쪽 피연산자를 작업자쪽에서 표현식에서는 조건부 검사됩니다 항상.

하지만 조금 반복적인, 어쩌면 가장 정확히 확인 작동 원리. 마찬가지로 조건 연산자 (?:) # 39, & # 39 만 해당 half& 평가합니다. (왼쪽 반단면 값이 true, false 반단면 it& # 39 의 경우, 오른쪽) 와 같은 표현을 사용할 수 있습니다.

int x = (y == null) ? 0 : y.getFoo();

누얼포인터렉세페시옹 없이.

[1]: http://java.sun.com/docs/books/jls/third_edition/html/expressions.html # 15.23 [2]: http://java.sun.com/docs/books/jls/third_edition/html/expressions.html # 15.24

해설 (0)

아니, 만약 사실이라면 (받을시간은 '또는' test), b, 테스트 결과 않을 테스트되었습니다 항상 진정한 가치를 있는모든 b 표현식입니다.

간단한 테스트를 한다.

if (true || ((String) null).equals("foobar")) {
    ...
}
    • 투사 'a' 가 아닌 누얼포인터렉세페시옹 '!
해설 (0)

즉, 여기서 두 번째 찼음을 단락하지 won& t # 39 평가됩니다.

If (A &amp &; A 는 b) 가 발생할 경우 단락하지 거짓값.

If (A &amp &; B) 가 발생할 경우 단락하지 것은 아니다.

If (b) 가 발생할 경우 단락하지 그렇다.

    • (B) 가 아닌 경우 발생할 경우 단락하지 거짓.
해설 (0)

아니요, 그것을 won& # 39, t, Java 는 단락 및 평가 결과 일단 정지점을 계시나니.

해설 (0)

예, 단락 부울입니다 표현식에서는 기본값입니다 c-같은 가족이었지 이 모든 행동에 대한 평가

흥미로운 사실은 이 ',' 와 '논리' 를 Java 는 &amp 피연산자로 (int 을 (를) ',' 그들은 과부하된 추상형데이터타입 이들은 걱정했던것 비트단위 운영체) 할 때 유용하게 사용할 수 있는 것도 평가할 수 있는 모든 약관보다 표현식에서는 부작용을.

해설 (1)

이 기본적인 차이점은 &amp 거슬러 올라간다. 그리고, 그리고 &amp &;

브트와 동일한 작업을 수행하는 경우가 많다. 잘 모를 경우 효율이 중요한 문제입니다. 일부 복제에서는 제거할 수 있습니다.

Z z2 = partialHits.get(req_nr).get(z); // assuming a value cannout be null.
Z z3 = tmpmap.get(z); // assuming z3 cannot be null.
if(z2 == null || z2 < z3){   
    partialHits.get(z).put(z, z3);   
} 
해설 (0)