안녕하세요~ 항상 나아가는 개발자 pink_salt 핑솔입니다!
코드프레소 Java 웹 개발 체험단 활동을 하고 있습니다.
11번째 java 포스팅입니다~ 고고!
이번엔 '처음 시작하는 Java 프로그래밍' 강의를 듣고 공부한 내용을 정리하여 열한 번째 포스팅을 진행하겠습니다.
제어문(Control Flow Statement) 개념
- 자바 프로그램은 기본적으로 위에서 아래로 순차적으로 실행됩니다.
- 프로그램의 실행 순서를 제어 가능합니다.
- 조건에 따라 실행 코드를 분기 ▶ 조건문(Conditional Statement)
- 특정 코드를 반복해서 실행 ▶ 반복문(Loop Statement)
이번 게시물에서는 조건문부터 알아보겠습니다.
조건문(Conditional Statement)
- 조건에 따라 서로 다른 코드가 실행 되도록 분기 처리한다.
- 예를 들어, 홀수, 짝수 판별 프로그램을 만들 수 있습니다.
- 주어진 숫자를 2로 나눈 나머지가 0이면 짝수 출력
- 주어진 숫자를 2로 나눈 나머지가 1이면 홀수 출력
- 티켓 발급 프로그램(가격은 1000원이고 미성년자는 20% 할인 해준다.) 등 프로그램을 조건문을 활용하여 구현할 수 있습니다.
비교 연산자를 통해서 if 문의 조건식을 통해 조건을 만들 수 있습니다.
boolean 형 결과를 가지는 비교연산자는 조건문의 조건식에 활용됩니다.
if, else if, else, switch 의 키워드를 사용하여 조건문을 구성합니다.
단일 if 조건문
조건문의 유형 1 - 단일 if 문(if Statement)
문법
- if 다음에 나오는 조건식을 체크합니다.(조건식의 결과는 true or false)
- 조건식의 결과가 true이면 if 내부의 코드를 실행합니다.
- 반대로 조건식의 결과가 false이면 if 내부의 코드를 실행하지 않습니다.
if (조건식) {
조건식의 결과가 true 인 경우 실행할 코드;
}
예제 코드
중괄호와 들여쓰기(indentation)
- 조건문의 중괄호{}와 들여쓰기는 필수입니다.
- 중괄호 {}는 수행할 코드를 구분하는 역할을 합니다.
- 중괄호 {} 내에서 실행할 코드 작성 시 앞에 들여쓰기는 필수입니다.
만약 실행코드가 1줄이면 중괄호를 생략해도 되지만 웬만하면 중괄호는 다 써주시는게 좋습니다.
boolean 자료형과 조건문
boolean 결과를 가지는 명령은 조건식을 구성할 수 있습니다.
예제
password가 1234가 맞는지 equals함수로 알아본 후 true false에 따라서 loginState = "Succeeded"; 코드가 실행됩니다.
if - else 문의 활용
조건문의 유형 2 : if - else 문
문법
- 조건식의 결과가 true이면 if 내부의 코드만 실행합니다.
- 조건식이 결과가 false이면 else 내부의 코드만 실행합니다.
- (유의) else구문은 if 구문의 조건식 없이 단독으로 사용 불가
예제코드
if 문에서 걸려서 discountRate = 0.2가 되고
밑의 price = price - (price * discountRate);를 거쳐 8000.0이 나오게 됩니다.
if 문에서 걸리지 않고 else문으로 가서 discountRate 가 0.1이 되고
밑의 연산문에 따라 9000.0이 결과로 출력됩니다.
if - else if - else 문의 개념
다중 조건인 경우 사용합니다.
조건문의 유형 3 : if - else if - else 문
문법
- if, else if 구문을 통해 조건식을 여러 개 구성할 수 있습니다.
- else if 문이 여러 번 사용해서 조건식을 여러 번 사용할 수 있습니다.
조건식의 결과가 true인 경우 그 내부코드만 실행합니다.- 단 하나의 조건식에 따라서 특정 if 아니면 특정 else if , else 의 내부 코드만 실행된다는 것을 말합니다.
- if 문은 반드시 최초에 1번 사용 가능합니다.
- else if 문은 없어가 1번 이상 다중 사용가능합니다.
- else 문은 없거나 마지막에 1번 사용 가능합니다.
논리 연산자
- 논리 연산자란 둘 이상의 조건들을 결합하여 최종 true 또는 false 값을 연산하는 것을 말합니다.
- 단일 조건 - 당신은 한국 사람인가요?
- 다중 조건
- 당신은 한국 사람이고, 파이썬 프로그래머인가요?(AND)
- 당신은 한국 사람이거나, 미국 사람인가요?(OR)
AND 연산자
모든 조건이 true인 경우에만 결과가 true가 됩니다.
당신은 한국 사람이고, 파이썬 프로그래머인가요?(AND)
한국사람 AND 파이썬 프로그래머
조건 중 하나라도 false면 결과를 false가 됩니다.
- 자바에서는 AND연산자를 && 기호로 표기합니다.
- 모든 조건이 true인 경우에만 결과가 true가 됩니다.
- 하나라도 false이면 결과는 false입니다.
OR 연산자
결합된 조건 중 하나라도 true이면 결과는 true가 됩니다.
당신은 한국 사람이거나, 미국 사람인가요?(OR)
한국사람 OR 미국 사람
모든 조건이 false인 경우에는 결과가 false가 됩니다.
- 자바에서는 OR 연산자를 || 기호로 표기합니다.
- OR 연산자의 결과는 boolean 형으로 조건문에서 빈번하게 사용됩니다.
- 결합된 조건 중 하나라도 true이면 결과는 true가 됩니다.
NOT 연산자
- true는 false로, false는 true로 조건식의 결과를 반대로 바꾸는 연산입니다.
- 논리 부정 연산자라고도 불립니다.
- 자바에서는 NOT 연산자를 ! 기호로 표기합니다.
- NOT 연산자의 결과는 boolean 형으로 조건문에서 빈번하게 사용됩니다.
if 문의 중첩(Nested Conditional Statement)
if - else if - else 문 하위에 또 다른 if(-else if-else)문이 중첩된 형태
조건문 중첩의 활용
예시 코드
score가 70 이상인지 확인한 후,
맞다면 attendance 가 80이상 인지 아닌지에 대해서 또 확인한다.
아니라면 else 문으로 넘어가게 됩니다.
조건문의 중첩은 코드 가독성의 저하를 유발합니다.
- 깊은 레벨로 중첩된 조건문은 코드의 가독성을 저하합니다.
- 복잡도를 낮추고 가독성을 높이기 위한 고민이 필요합니다.
- 조건을 단순화 할 수 있을지 고민합니다.
- 다형성의 활용에 대해 생각해봐야합니다.
- Clean code에 대해서 공부해야합니다.
- clean control structure
Switch - case 문
- 조건문을 switch - case 문으로 표현 가능합니다.
- 조건식의 경우의 수가 많아지더라도 간결하게 표현할 수 있습니다.
- 처리속도가 if - else if 문보다 빠릅니다.
문법
- switch 문에는 조건식을 기재하고 중활호{} 로 블록을 만듭니다.
- case문에는 조건식에 대한 결과 값을 명시하고, 끝에 콜론(:)을 붙입니다.
- case 문 내에는 각각 수행할 코드와 끝에 break; 을 작성해야합니다.
- default: 문을 작성할 수 있습니다.
- default문은 조건식의 결과와 일치하는 case문이 하나도 없을 경우 수행하는 코드입니다.
switch - case 문의 흐름
- switch 문의 조건식을 계산합니다.
- 결과와 일치하는 case 문을 찾아서 코드를 수행합니다.
- break 문을 만나면 switch 문을 빠져나갑니다.
- 만약 결과와 일치하는 case 가 없는 경우 default 문을 수행합니다.
- switch 문의 중괄호가 끝나면 switch 문을 빠져나갑니다.
break 문
- break 문을 만나면 switch 구문을 빠져나갑니다.
- break 문을 통해 case 문의 코드 실행 영역을 구분할 수 있습니다.
- break 문은 생략 가능합니다. 이 경우에는 switch 문이 종료될 때까지 모든 문장을 수행합니다.
switch - case 에 OR 조건 활용하기
break 문을 생략 가능, 이 경우 switch 문이 종료될 때까지 모든 문장을 수행합니다.
switch - case 문의 제한
- switch 조건식의 결과는 정수 또는 문자열이어야 합니다.
- case 문에는 정수 상수, 문자열 상수만 올 수 있습니다.(변수와 실수는 불가능합니다.)
case문에 변수 또는 실수가 오면 에러가 발생합니다.
다음 게시물에서는 Java에서 배열에 대해 공부해보겠습니다!
열심히 나아가는 개발자 핑솔이었습니다.
모두 모두 파이팅!
go go!
코드프레소 URL: https://www.codepresso.kr/
프리미엄 IT 교육 서비스 - 코드프레소
www.codepresso.kr
'프로그래밍 언어 > Java' 카테고리의 다른 글
Java 프로그래밍 기본 (13) - 반복문 (0) | 2022.01.17 |
---|---|
Java 프로그래밍 기본 (12) - 배열 (0) | 2022.01.17 |
Java 프로그래밍 기본 (10) - 비교 연산자, 연산자 우선순위 (0) | 2022.01.17 |
Java 프로그래밍 기본 (9) - 기본 자료형의 형변환 (0) | 2022.01.17 |
Java 프로그래밍 기본 (8) - Java 연산자 (0) | 2022.01.16 |