조건문, &&와 ||

Yullc·2025년 3월 4일
post-thumbnail

1. 조건문

int age = 50;

System.out.println("당신의 나이 : " + age);
// 당신의 나이 : 50

if ( age >= 20 ) { // age >= 20 (은)는 결국 실행되면 true 가 된다.
    System.out.println("성년");
}

if ( age < 20 ) { // age < 20 (은)는 결국 실행되면 false 가 된다.
    System.out.println("미성년");
}

코드를 살펴보자면 if를 이용해 조건을 설정할 수 있다.
만약 if(조건) 조건이 참이면 { }안에 있는 값을 출력하고 조건이 거짓이면 출력하지 않는다.
그래서 위 코드를 출력하게 되면 '성년'이라는 값이 나올것이다.

2. &&와 ||

if ( 10 > 20 && 1 != 1 && 3 > 2 ) {
  // 실행?
}

// 1단계 : 10 > 20 && 1 != 1 && 3 > 2
// 2단계 : false && 1 != 1 && 3 > 2 // 여기서 바로 결론이 난다. 왜냐하면 그리고(&&)는 좌측식과 우측식이 모두 참(true)이어야 참(true)으로 결론이 나는데, 좌측식이 이미 거짓이기 때문에 더 이상의 연산이 필요가 없다고 자바가 판단.
// 3단계 : false

  • &&연산자는 조건이 둘중 하나라도 거짓이면 false이고 둘다 참이어야 true로 반환된다.
if ( 10 > 20 || 1 != 1 || 3 > 2 ) {
  // 실행?
}

// 1단계 : 10 > 20 || 1 != 1 || 3 > 2
// 2단계 : false || 1 != 1 || 3 > 2
// 3단계 : false || false || 3 > 2
// 4단계 : false || false || true
// 5단계 : false || true // 4단계 앞에 있는 false || false 의 연산결과로 false 가 된다.
// 6단계 : true

  • ||연산자는 조건이 둘중 하나라도 참이면 true이고 둘다 거짓이어야 false를 반환한다.

3. 조건문 심화

조건문의 다양한 방법을 이용해 동일한 값을 출력 해볼것이다.

int age = 10;

// v1
if ( age < 10 ) { System.out.println("아동/영유아"); }
if ( age >= 10 && age < 20 ) { System.out.println("10대"); }
if ( age >= 20 ) { System.out.println("20대 이상"); }

v1에서는 if문을 3번 사용해 개별적으로 비교를 시키는 코드이다. age가 10보다 작으면 '아동/영유아를'. age가 10이상이고 20미만이면 '10대'를, age가 20 이상이면 '20대 이상'을 반환하게 되는 코드이다.

// v2
if ( age < 10 ) { System.out.println("아동/영유아"); }
else if ( age >= 10 && age < 20 ) { System.out.println("10대"); }
else if ( age >= 20 ) { System.out.println("20대 이상"); }

v2에서는 if문과 else if 문을 사용하였다. 먼저 if문에서 비교를 한 후, 거짓이면 else if문으로 넘어가게 된다. 그리고 else if문에서 조건이 참이면 그 후에 있는 값은 비교를 안하고 조건식을 빠져나오게 되는 방식이다.

// v2-2
if ( age < 10 ) { System.out.println("아동/영유아"); }
else if ( age < 20 ) { System.out.println("10대"); 
else if ( age >= 20 ) { System.out.println("20대 이상"); }

여기서는 나이가 10살 보다 크다라는 조건을 빼도 된다. 왜냐하면 10살 보다 작았다면 애초에 이 부분이 실행되지 않는다. 바로 윗줄조건(age < 10)이 참으로 나와서 윗줄만 실행된다.


// v3
if ( age < 10 ) { System.out.println("아동/영유아"); }
else if ( age < 20 ) { System.out.println("10대"); }
else { System.out.println("20대 이상"); } 

이 버전이 제일 간결하다고 볼 수 있다. 전체(3가지) 경우의 수 중에서 무조건 정답이 1개 존재한다면, 마지막 if문의 조건식은 생략하여 간결하게 작성한다.

profile
아자아자자

0개의 댓글