1. 조건문을 다시 공부하게 된 이유
어제 jpa를 공부하면서 예외처리 부분에서 강의를 마치고 혼자 코드리뷰를 하고 있었는데 1시간 넘게 이해를 못했던 구간이 있었다.
if문을 사용한 예외처리 였는데 무엇인지는 알고 있고 도출하고자 하는 답도 똑같이 나왔는데 과정에서 뭔가 계속 맞지 않아서 고민을 하던 끝에 언어에 대한 기초 지식도 없이 프레임워크를 다루고 있었구나 생각이 들었다... 자바로 코딩을 한지가 4개월이 넘어가는데 이게 맞나...? 싶었다.
1-1. 몰랐던 부분
막연하게 if문을 사용하는건 조건을 걸어두고 이에 맞춰서 필터에 걸리는 답을 출력하는 것으로 알고 있었다.
그러니깐 만약 첫번째 조건에서 원하는 답이 나온다면 거기서 if문은 멈춘다? 라고 생각을 했고,
항상 필터에 걸린 값만 도출이 되니깐 기본서 한 번 읽어보지 않고 스스로 판단해버린 실수를 범했던게 아닐까 한다.
2. 조건문 if란?
if문은 프로그래밍에서 조건에 따라 코드의 실행 흐름을 제어할 수 있는 문법이라고 한다.
쉽게 생각하면 '만약 ~라면'이라는 뜻을 가졌다고 보면 이해가 빠를 것 같다.
if (조건) {
조건이 참일 경우 실행할 코드
}
기본틀은 이렇게 생겼는데 저 뒤에 if 를 계속 달면 조건이 추가될 수 있다.
if 뒤에 있는 (조건) 부분에는 참(true) 또는 거짓(false)을 판별할 수 있는 비교 연산자나 논리 연산자가 들어가게 되는데 조건이 참인 경우에만 중괄호{} 안의 코드가 실행이 된다고 한다. 조건이 거짓으로 판별될 경우 중괄호{} 안의 코드를 건너뛰고 다음 코드를 실행하게 된다.
3. 조건문 if의 특징
조건문의 특징에는 조건식, 분기, 다중 조건, 중첩 조건문 이러한 특징들을 가지고 있다. if문은 프로그래밍에서 굉장히 중요한 요소이며, 조건에 따라 다른 동작을 수행해야 할 때 사용된다. 조건문을 통해 프로그램의 흐름을 유연하게 제어할 수 있으며, 필요한 동작을 정확하게 수행할 수 있도록 해준다.
3-1. 조건문
조건이 참(True)일 때만 코드가 실행된다. 조건이 거짓(False)인 경우 코드는 실행되지 않는다.
int number = 10;
if (number > 5) {
System.out.println("Number is greater than 5");
}
이 코드에서 number > 5라는 조건이 참이기 때문에, "Number is greater than 5"라는 메시지가 출력이 된다.
만약 number가 5 이하라면, 아무런 출력이 이루어 지지 않는다.
3-2. 분기문
if문은 코드의 실행 흐름을 분기할 수 있다. 즉, 조건에 따라 다른 코드를 실행할 수 있게 해준다.
int score = 85;
if (score >= 90) {
System.out.println("Grade A");
} else if (score >= 80) {
System.out.println("Grade B");
} else {
System.out.println("Grade C");
}
분기분은 말 그대로 조건에 따라 각각 다른 코드를 실행할 수 있도록 해준다.
3-3. 중첩 가능
if문 내부에 다른 if문을 넣는 것이 가능하다. 이를 '중첩 if문'이라고 하며, 복잡한 조건을 표현할 때 사용된다.
int age = 20;
boolean isMarried = false;
if (age > 18) {
if (isMarried) {
System.out.println("Married adult");
} else {
System.out.println("Unmarried adult");
}
} else {
System.out.println("Not an adult");
}
쉽게 생각하면 한 조건이 참일 경우에 그 안에 존재하는 또 다른 조건문을 돌리는 것이라고 보면 된다.
이런 경우 2개 이상의 조건이 모두 참이어야 특정 코드가 실행이 가능하다.
즉 if의 첫번째 조건문인 age > 18이 참이기 때문에, 내부 코드가 실행이 된다.
2번 째 조건인 isMarried를 참인 조건으로 걸었기 때문에 Married adult가 출력이 된다.
끝부분에 else 를 넣은 이유는 2개 중 하나라도 거짓이 나오면 출력이 안되기 때문에 방지 차원에서 넣게 되었다.
3-4. else if, else 구문
'else if'는 추가적인 조건을 체크하고, 'else'는 모든 조건이 거짓일 때 실행할 코드를 작성하는데 사용된다.
else if는 앞에서 사용된 if문의 조건이 거짓일 경우 다음 조건을 검사할 때 사용된다. 만약 앞서서 걸었던 조건인 if문이 참일 경우엔
else if에 걸린 조건문은 동작되지 않는다.
int temperature = 20;
if (temperature > 30) {
System.out.println("It's hot outside");
} else if (temperature > 10) {
System.out.println("It's warm outside");
} else {
System.out.println("It's cold outside");
}
else if 는 추가적인 조건을 체크할 때 사용이 되고, else는 코드가 작동되는 동안 참이 없을 경우 마지막 출력시에 넣는다.
만약 독립된 조건일 경우엔 else if를 사용하지 않고, if문을 각각 따로 사용해주어야 한다.
int number = 12;
if (number % 2 == 0) {
System.out.println("The number is even");
}
if (number > 10) {
System.out.println("The number is greater than 10");
}
이와 같이 두 조건이 서로 독립적이므로, 각각 따로 if문을 사용하여 조건을 검사해야한다. 이렇게 한다면, number가 짝수이면서 10보다 큰 경우에 두 문장이 모두 출력이 된다.
4. 정리
내가 궁금했던 것은 if문에 뭐가 있든 어쨌든 원하는 결과값이 도출되면 코드가 종료되는지 여부였는데, if문만 단독으로 사용하면 참이든 거짓이든 일단 코드는 끝까지 돌린다고 보면 되고 else if 가 들어가게 되면 원하는 값이 도출되면 코드가 종료되게 된다. else는 if문을 전부 돌려도 만족하는 조건이 없을 때 실행할 코드는 출력할 때 사용된다. if문, else if문은 사용처에 따라 적절하게 사용하지 못한다면 만약 여러 가지 조건을 중첩시키고 싶을 때 else if를 넣어버리면 한가지 조건만 출력하게 된다. 그렇기 때문에 if문을 사용할 것인지, if와 else if를 묶어서 사용할지는 요구사항에 따라 다르기 때문에 둘의 차이를 이해하고 적절하게 사용할 수 있어야 한다.
5. 마치며
코딩을 배울 때 기초는 대충 넘어가고 예제 코드를 쓰면서 주먹구구식으로 그때 그때 찾아가면서 하다보니 각각이 가지는 특성에 대해서는 고려해본 적이 많지 않았던 것 같다. 막연하게 if문에 조건이 많으면 else if 넣고 마지막에 else 넣자는 알고 있었지만 이런 이유로 저렇게 사용해야 된다? 라는 생각은 정말 안하고 코딩했던 것 같다... 조금 여유가 생겼을 때 이렇게 기초를 다시 공부하니 재미도 있고 스스로를 돌아보는 시간을 가지게 되는 것 같다. 갈 길이 멀다...😮💨
'Language > Java' 카테고리의 다른 글
반복문 for (0) | 2023.12.13 |
---|---|
반복문 for-each (0) | 2023.12.12 |
반복문 while (0) | 2023.12.11 |
조건문 switch (0) | 2023.12.09 |
String과 StringBuilder (0) | 2023.12.04 |
쓰임 있는 사람이 되기 위해 노력 중입니다.