2013-02-20 5 views
0

난 당신이 자바에서이 같은 것을 사용할 수 있다는 것을 알고있다 : 바로 다른 부품없이 비슷한 일이Java에서 else 부분이없는 고급 if 문이 있습니까?

(a > b) ? a : b; 

있습니까?

+0

.. 'else'부분은 선택 사항입니다. – mre

+3

표현식이 거짓이면 값은 어떻게됩니까? –

+1

'else'가 없으면'if (a> b) z = a'를 수행하십시오. 나는 네가 의미하는 것을 이해하지 못한다. – Shivam

답변

10

이것은 표현식이 아니라 표현식이므로 항상 평가됩니다. "else part"가 없으면 테스트가 틀린 경우 평가할 표현식이 없습니다. 그래서, 아니오, 다른 것 없이는 비슷한 것이 없습니다.

나는 conditional operator 사용에 대한 좋아하는 것은 당신이

foo = a > b ? c : d; 

같은 것을 지정할 수 있습니다 그것을 읽는 당신이 foo에 관계없이 테스트가 사실 여부에 할당 무언가를 가지고 알고 있습니다. 따라서 일부 테스트에 따라 값이 할당되었음을 나타내는 방법을 제공합니다.

그루비는 일부 유사 사업자 있습니다 왼쪽의 표현식이 null의 경우

?:

, 엘비스 연산자, 기본으로 오른쪽에있는 값을 할당합니다.

?. (safe-null 연산자)은 왼쪽이 Null로 평가되면 null로 평가됩니다. null이 될 가능성이있는 사슬 (예 : foo?.bar?.baz)이있는 경우에 유용합니다. null이있는 경우 NPE로 폭파하지 않고 모든 null 검사를 입력하지 않을 것입니다.

+0

젠장, 24 초 날 때려. – Antimony

3

아니요. 그것은 말이되지 않습니다.

?:은 3 진 비교 연산자 - 표현식입니다. else 문이 없으면 표현식의 값은 무엇입니까? C#은 속기 버전 ??을 가지고 있습니다. 그러나 그것은 단지 구문 설탕 일 뿐이며 Java는 어쨌든 그런 것을 가지고 있지 않습니다.

+0

_ternary_ 연산자라고합니다. (죄송합니다. 편집에 대한 여섯 글자 제한 때문에 답변을 향상시킬 수 없습니다.) – nutlike

+1

@nutlike : 기술적으로 jls는 조건 연산자라고합니다. 나는 그것을 지금 막봤을 때까지 몰랐다. –

+0

@Nathan Hughes : 귀하의 의견 (및 귀하의 답변 내부 링크)을 주셔서 감사합니다 - 이것 역시 알지 못했습니다. 완전을 기하기 위해서 : [Wikipedia] (http://en.wikipedia.org/wiki/%3F :). – nutlike

2

나는 이것을 "c"라고 부르는 var에 값을 할당하는 데 사용하고 있다고 생각합니다. if 문이 true 일 때만 값을 할당하려고합니다.

if(a > b) c = a; 

하지만 당신이 정말로는 삼항 구문을 사용하려면 경우 당신은 쓸 수 : 일반적인 방법이 될 것 삼항 괄호 그래서 내가 그들을 생략 한 선택적입니다

c = a > b ? a : c; 

참고.

관련 문제