조건식이 반드시 boolean으로 평가되어야 한다.
if (n&1) System.out.println("홀수") ; // error in Java
=>
if ((n&1) == 1) System.out.println("홀수") ;
선택 연산자(?)에서 true, false 일때의 두개의 자료형이 같아야한다.
다중선택일때 if, elseif, else형일때 중간에 탈출할 수 있어서 if 3개 쓰는 것보다 괜찮다
==
,!=
는 두 참조 변수가 같은 객체를 가리키는지 검사하는 것
내부상태를 비교하려면 equals
를 사용해야된다.
Objects 클래스에 있는 equals를 재정의해서 사용
같은지 다른지 비교하는게 아니라, 누가 크거나 작은지, 앞에 올지 뒤에올지 비교할때
==, !=연산자는 두 참조 변수의 주소를 비교(똑같은 것을 가리키고 있는지)하는 것
객체들간에는 절대 ==, != 이 연산자들가지고 비교할 수 없음
근데 웬만하면 참조변수는
if(account == null)
와 같이 null과 비교하는 코드는 사용하지 말기- 비교하지 않고도 똑같이 동작하도록 코드 짜기
C/C++와 다르게 문자열도 된다. 대신 연산 비용이 더 들음
상수 표현식만 가능, fall through 사용 잘하는 것, default가 없으면 한번도 switch절을 안 사용하고 넘어갈 수 있는데 이것이 오류를 발생시킬 수도 있음(예외처리가 잘 안돼서) 그래서 default는 써주는 편이 바람직함
-> 하고 yield하고 똑같은 것
- 'yield' 키워드를 사용해서 반환(java 13에서 변경된 내용으로 java 12를 사용한다면 'yield'대신 'break'를 사용하면 된다.)
- 'return' 키워드를 사용하면 컴파일 에러가 발생한다. (반환값이 없는 경우라면 return을 사용할 수도 있다.)
중첩 반복문일 때 레이블 break를 통해 전체 반복문을 종료시킬 수 있다.