Java 전문가 여러분!
삼항 연산자의 두 결과를 연결할 때 Java에서 문자열 연결이 제대로 작동하지 않는 이유를 설명해 주시겠습니까?
예:
String str = null;
String x = str != null ? "A" : "B" + str == null ? "C" : "D";
System.out.println(x);
출력은 "D"이지만 "BC"를 예상했습니다.
운영자의 우선 순위 때문에 그렇게 작동한다고 생각하지만 위의 경우에 대해 정확히 "D"를 얻는 방법에 대해서는 확실하지 않습니다. 이 경우 어떤 계산 알고리즘이 발생합니까?
다음 코드로 해석됩니다.
String x = str != null ? "A" : ("B" + str == null ? "C" : "D");
"B" + str
null이 아니므로 다음과 같이 평가됩니다. "D"
OSborn의 답변 덕분에 다음 코드로 예상 한 작업을 수행 할 수 있습니다.
String x = (str != null ? "A" : "B") + (str == null ? "C" : "D");
그리고 당신은 단지 비교 str
하고 null
있고 두 조건문이 거의 동일하기 때문에 다음과 같이 줄일 수 있습니다.
String x = (str != null ? "AD" : "BC");
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다