본문 바로가기
코딩

[ Java ] 자바-입문 4. 조건문

by 모두의 아카이브 2024. 2. 3.
반응형

 

1. 조건문

IF문

  • if문은 특정 조건이 참인지 확인하고, 그 조건이 참(true)일 경우 특정 코드 블록을 실행한다.

if (condition) {
 // 조건이 참일 때 실행되는 코드
}

else문

  • else문은 if문에서 만족하는 조건이 없을때 실행하는 코드
if (condition) {
 // 조건이 참일 때 실행되는 코드
} else {
 // 만족하는 조건이 없을 때 실행되는 코드
}

else if문

package cond;
public class If3 {
 public static void main(String[] args) {
 	int age = 14;
 	if(age <= 7) { //~7: 미취학
 		System.out.println("미취학");
 	}
 	if(age >= 8 && age <= 13) { //8~13: 초등학생
 		System.out.println("초등학생");
 	}
 	if(age >= 14 && age <= 16) { //14~16: 중학생
 		System.out.println("중학생");
 	}
 	if(age >= 17 && age <= 19) { //17~19: 고등학생
 		System.out.println("고등학생");
 	}
 	if(age >= 20) { //20~: 성인
 		System.out.println("성인");
 	}
 }
}

 

이 코드에는 두가지 단점이 있다.

1.이미 조건을 만족해도 불필요하게 조건을 검사함

→ 나이가 5살일 경우 첫 if문에서 걸러지는데 뒤에까지 모두 검사해야함

2.코드 효율성

-> 예를들어 나이가 8살인 초등학생이라면 미취학을 체크하는 조건인 age <=7을 통해 나이가 8살이 넘는 다는 사실을 알 수 있다. 조건을 보면 age>=8 이라는 조건은 이미 앞의 age <=7이라는 조건과 관련이 있다. 결과적으로 중복 체크 한 것이다.

if (condition1) {
 // 조건1이 참일 때 실행되는 코드
} else if (condition2) {
 // 조건1이 거짓이고, 조건2가 참일 때 실행되는 코드
} else if (condition3) {
 // 조건2이 거짓이고, 조건3이 참일 때 실행되는 코드
} else {
 // 모든 조건이 거짓일 때 실행되는 코드
}
  • elseif 문은 앞선 if 문의 조건이 거짓일때 다음 조건을 검사한다. → 만약 앞선 if 문이 참이라면 elseif 를 실행하지 않는다.

if문과 else if문

if 문에 else if 를 함께 사용하는 것은 서로 연관된 조건일 때 사용한다. 그런데 서로 관련이 없는 독립 조건이면 else if 를 사용하지 않고 if 문을 각각 따로 사용해야 한다

ex) 아이템 가격이 10000원 이상일 때, 1000원 할인 나이가 10살 이하일 때 1000원 할인

 

참고 - if문 {} 중괄호 생략

다음과 같이 if 문 다음에 실행할 명령이 하나만 있을 경우에는 {} 중괄호를 생략할 수 있다. else if , else 도 마 찬가지이다.

if (true)
 System.out.println("if문에서 실행됨");
 System.out.println("if문에서 실행 안됨");

이때 두번째 문장은 if문과 무관하다. 만약 둘다 if문 안에 포함하려면 { } 를 사용해야 한다.

 

  • if문 명령이 한개만 있을 경우에도 다음과 같은 이유로 중괄호를 사용하는 것이 좋다.
    • 가독성: 중괄호를 사용하면 조건문의 범위가 명확하게 표시되므로 코드의 흐름을 더 쉽게 이해할 수 있다.
    • 유지보수성: 중괄호를 사용하면 나중에 코드를 수정할 때 오류를 덜 발생시킬 수 있다.

 


switch문

  • switch 문은 앞서 배운 if 문을 조금 더 편리하게 사용할 수 있는 기능이다.
  • 다만 if 문은 비교 연산자를 사용할 수 있지만, switch 문은 단순히 값이 같은지만 비교할 수 있다.
switch (조건식) {
 case value1:
 	// 조건식의 결과 값이 value1일 때 실행되는 코드
 	break;
 case value2:
 	// 조건식의 결과 값이 value2일 때 실행되는 코드
 	break;
 default:
 	// 조건식의 결과 값이 위의 어떤 값에도 해당하지 않을 때 실행되는 코드
 }
  • 조건식의 값이 어떤 case의 값과 일치하면 해당 case의 코드를 실행
  • break문은 실행 중인 코드를 끝내고 switch문을 빠져나가게 해주는 역할이다.
  • 만약 break문이 없다면 해당 case 밑에 존재하는 모든 코드가 실행된다.
  • default문은 조건식의 값이 모든 case와 일치하지 않을 경우 실행된다. if문의 else와 같다.
    • default는 선택

자바 14 새로운 switch문

package cond;
public class Switch3 {
 public static void main(String[] args) {
 	//grade 1:1000, 2:2000, 3:3000, 나머지: 500
 	int grade = 2;
 	int coupon = switch (grade) {
 		case 1 -> 1000;
 		case 2 -> 2000;
 		case 3 -> 3000;
 	default -> 500;
	 };
 	System.out.println("발급받은 쿠폰 " + coupon);
 }
}
  • ->을 사용한다.
  • case에 따른 데이터를 반환할 수 있다.

if문 vs switch문 

  if switch
단순한 값 가능 가능
조건식 가능 불가능
간결함 상대적으로 복잡 상대적으로 간결

삼항 연산자

단순히 참과 거짓에 따라서 특정 값을 구하는 경우 삼항 연산자 또는 조건 연산자라고 불리는 ?: 연산자를 사용할 수 있다.

(조건) ? 참_표현식 : 거짓_표현식
  • 조건에 만족하면 참_표현식이 실행되고, 조건에 만족하지 않으면 거짓_표현식 실행
  • if문처럼 코드 블럭을 넣을 수 있는 것이 아니라 단순한 표현식만 넣을 수 있다.

 


배운점

자바14 부터 가능한 새로운 switch문에 대해 배우게 되었고 이걸통해 if문을 사용하여 구현할 수 있었던 것보다 훨씬 더 간결하고 가독성 좋은 코드가 나올것 같고, 참과 거짓에 따라 특정값을 구하는 경우는 삼항연산자를 이용하면 된다는걸 배웠다.

반응형