자, 만약이라는 가정의 뜻만 알고 있던 if가
자바에서는 조건문 대장으로 쓰인다는 사실!!
자바에서 조건문이란
조건식과 실행 문장을 포함한 블록으로 구성된다
크게if 계열과 switch~ case로 나뉜다
그중 모든 상황에서 사용할 수 있는 기본적인 조건 문인
if를 먼저 볼까요?
자, 들여다볼까요?
- 조건식 결과에 따라 실행할 문장이 달라지는 문
-if 문 계열과 switch ~ case 문으로 구분됨
- 가장 단순한 조건문
- 조건식 판별 결과가 true 일 때 특정 문장(블록)을 추가로 실행하는 if 문
if문 찹 쉽죠?
- 특정 조건식 판별 결과가 true 일 때와 false 일 때 서로 다른 블록을 실행
- 삼항연산자와 유사한 형태로 수행되나 삼항연산자보다 유연함
문장 1;
if(조건식) {
조건식 판별 결과가 true 일 때 실행할 문장들...
문장 2;
}
* 문장 3;
=> 조건식 판별 결과가 true 일 때 : 문장 1 -> 조건식(true) -> 문장 2 -> 문장 3
=> 조건식 판별 결과가 false 일 때 : 문장 1 -> 조건식(false) -> 문장 3
문장 1;
if(조건식) {
문장 2; // 조건식 결과가 true 일 때 수행할 문장들...
} else {
문장 3; // 조건식 결과가 false 일 때 수행할 문장들...
}
if 문 등의 블록 내에서 또 다른 if 문을 사용하여 조건식을 판별하기 위해
if 문을 여러 번 중첩시키는 것
int score=88;
String grade="";
if(score>=0&&score<=100) {
if(score>=90&&score<=100) {
System.out.println("A"+"학점");
}else if(score>=80&&score<90){
System.out.println("B"+"학점");
}else if(score>=70&&score<80){
System.out.println("c"+"학점");
}else if(score>=60&&score<70){
System.out.println("D"+"학점");
}else {
grade="F";
}
System.out.println("학점"+grade);
}else {
System.out.println("점수 입력 오류!");
중괄호를 생략했을 때 생길 수 있는 오류.
왜> else 문은 가장 가까운 위쪽 if 문과 쌍을 이룬다
int num1 = 128, num2 = 256;
if (num1 > num2)
if (num1 > 100)
System.out.println("num1은 " + num1);
else
if (num2 > 100)
System.out.println("num2는 " + num2);
위의 코드를 실행하면 아래와 같은 코드 형태로 실행됨
=> else 문은 바로 위에 있는 if(num > 100)의 if 문과 쌍을 이루기 때문에
첫 번째 if(num1 > num2) 조건 판별 결과가 false일 경우 아무것도 실행되지 않음
if (num1 > num2) {
if (num1 > 100) {
System.out.println("num1은 " + num1);
} else {
if (num2 > 100) {
System.out.println("num2는 " + num2);
}
}
<Dangling Else issue_오류 막는 방법>
중괄호를 생략하지 않고 명확한 형태로 작성해야 논리적 오류를 막을 수 있다!
if (num1 > num2) {
if (num1 > 100) {
System.out.println("num1은 " + num1);
}
} else {
if (num2 > 100) {
System.out.println("num2는 " + num2);
}
부족한 글을 읽어주셔서 감사드립니다
아직 부족한 게 많으니
틀린 곳이 있다면
조언의 말씀 꼭 부탁드립니다!!!!
자바에서 보이는 final 제어자 도대체 왜 쓰는 거지? (0) | 2020.06.12 |
---|---|
자바이해하기_java Singleton 디자인 패턴이 뭐지? (0) | 2020.06.04 |
자바 변수총정리_ 인스턴스변수,로컬변수,클래스변수 싹털기 (0) | 2020.06.03 |
[JAVA] 쉬운 자바 문법_산술연산자, 복합(확장) 대입 연산자 (0) | 2020.06.02 |
[java 기본] 이해하기 쉬운 자바_클래스(class), 인스턴스란? (0) | 2020.06.01 |