[Java] 조건문

이현준·2020년 11월 4일
0

Java

목록 보기
13/15

Java에서의 조건문

조건식이 반드시 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를 사용해야된다.

1. equals

Objects 클래스에 있는 equals를 재정의해서 사용

2. compareTo

같은지 다른지 비교하는게 아니라, 누가 크거나 작은지, 앞에 올지 뒤에올지 비교할때

==, !=연산자는 두 참조 변수의 주소를 비교(똑같은 것을 가리키고 있는지)하는 것

객체들간에는 절대 ==, != 이 연산자들가지고 비교할 수 없음

null 여부 검사

근데 웬만하면 참조변수는 if(account == null)와 같이 null과 비교하는 코드는 사용하지 말기- 비교하지 않고도 똑같이 동작하도록 코드 짜기

가능한 모든 경우 완벽 분석

> Or >=

논리 연산자

  • short-circuit(또는 지연평가)은 앞에 것을 판단해서 그 조건이 만족되면 그 뒤에는 체크하지 않는 것(ex. 위에서 input이 null이면 false인데 이때 &&로 비교했기 때문에 뒤에 true나 false와는 상관없이 하나라도 false이면 전체가 false로 결정됨으로 뒤에 식들은 판별하지 않는다)
  • 우선순위 같은 경우 ==가 &보다 우선 순위가 높음 그래서 괄호를 잘 안 쳐주면 n&1==1 같은 경우 1==1을 먼저 연산하고 &을 연산함 주의해야됨

부동 소수의 비교

Switch문

C/C++와 다르게 문자열도 된다. 대신 연산 비용이 더 들음

상수 표현식만 가능, fall through 사용 잘하는 것, default가 없으면 한번도 switch절을 안 사용하고 넘어갈 수 있는데 이것이 오류를 발생시킬 수도 있음(예외처리가 잘 안돼서) 그래서 default는 써주는 편이 바람직함

-> 하고 yield하고 똑같은 것

  • 'yield' 키워드를 사용해서 반환(java 13에서 변경된 내용으로 java 12를 사용한다면 'yield'대신 'break'를 사용하면 된다.)
  • 'return' 키워드를 사용하면 컴파일 에러가 발생한다. (반환값이 없는 경우라면 return을 사용할 수도 있다.)

break 문


중첩 반복문일 때 레이블 break를 통해 전체 반복문을 종료시킬 수 있다.

0개의 댓글