백엔드/Java의 정석

TIL 정리_04

ran4 2022. 2. 19. 23:57

 

 

조건문과 반복문

 

조건문 : 조건을 만족할때만 {}을 수행 (0~1번)

반복문 : 조건을 만족하는 동안 {}를 수행 (0~n번)

둘을 합해서 제어문 (flow control statement)이라고 한다

 

if문 

조건식이 참(true)일 때, 괄호 {}안의 문장들을 수행한다.

if (조건식) {

//조건식이 참일 때 수행될 문장을 적는다

}

ex) if(score > 60) {

System.out.println("합격입니다");

}

 

조건식의 다양한 예

조건식 조건식이 참일 조건
90 <= x && x <= 100 정수 x가 90이상 100이하일때
x < 0 || x > 100 정수 x가 0보다 작거나 혹은 100보다 클 때
x%3 == 0 && x%2!=0 정수 x가 3의 배수지만, 2의 배수는 아닐 때 
ch == 'y' || ch == 'Y' 문자 ch가 'y' 또는 'Y'일 때 
ch==' ' || ch=='\t' || ch=='\n' 문자 ch가 공백이거나 탭 또는 개행문자일 때 
'A' <= ch && ch <= 'Z' 문자 ch가 대문자일 때 
'a' <= ch && ch <= 'z' 문자 ch가 소문자일 때 
'0' <= ch && ch <= '9' 문자 ch가 숫자일 때 
str.equals("yes") 문자열 str의 내용이 "yes"일때 (대소문자 구분)
str.equalsIgnoreCase("yes") 문자열 str의 내용이 "yes"일때 (대소문자 구분X)

참고 : \가 백스페이스다 겉보기만 다를뿐 eclipse에서는 제대로 출력됨 

 

블럭 {}

여러 문장을 하나로 묶어주는 것 

 

if-else문 

둘 중의 하나 - 조건식이 참일 때와 거짓일 때로 나눠서 처리한다

if (조건식) {

    //조건식이 참일 때 수행될 문장을 적는다.

}  else {

   //조건식이 거짓일 때 수행될 문장들을 적는다.

}

 

if-else-if문

여러 개 중의 하나 - 여러 개의 조건식을 포함한 조건식

if (조건식1) {

 //조건식 1의 연산결과가 참일 때 수행될 문장들 

} else if (조건식2) {

 //조건식 2의 연산결과가 참일 때 수행될 문장들을 적는다.

} else if (조건식 3) {

 //조건식 3의 연산결과가 참일 때 수행될 문장들을 적는다.

} else { //마지막은 보통 else 블럭으로 끝나며, 생략 가능하다

 // 위의 어느 조건식도 만족하지 않을 때 수행될 문장들을 적는다.

}

 

중첩 if문 - if문 안의 if //중첩횟수에 제약은 없다

if (조건식1) {

//조건식 1의 연산결과가 참일 때 수행될 문장들을 적는다

           if(조건식2) {

           //조건식 1 과 2가 모두 true일 때 수행될 문장들

           { else {

           //조건식 1 이 true이고 2가 false 일 때 수행되는 문장들

}

} else {

//조건식1이 false일 때 수행되는 문장들

}

//괄호의 중요성 : if else문은 가까운 것과 상호작용 하기 때문에 괄호를 치는게 좋다

 

switch문

조건문은 보통 if문을 쓰지만, 처리해야 하는 경우의 수가 많을 때 유용한 조건문이다 

(if문은 참과 거짓일 경우를 여러번 연산해야 하기 때문)

*순서 

1. 조건식을 계산한다

2. 조건식의 결과와 일치하는 case문으로 이동한다.

3. 이후의 문장들을 수행한다.

4. break문이나 switch문의 끝을 만나면 switch문 전체를 빠져나간다.

하지만,  switch문은 제약이 있어 경우의 수가 많을 때 사용하면 좋음

if > switch 제약있음 if < switch 가능

 

switch (조건식)>정수 (혹은 문자열) {

case 1 :

//

break; //switch문을 벗어난다

case 2

//조건식의 결과가 값2와 같을 경우 수행될 문장들

break;

default : // else블럭과 같이 생략가능

//조건식의 결과와 일치하는 case문이 없을 때 수행될 문장들

}

 

switch문의 제약조건

switch문의 조건식 결과는 정수 또는 문자열이어야 한다.

case문의 값은 정수, 상수(문자 포함), 문자열만 가능하며, 중복되지 말아야한다. //변수x

 

임의의 정수(실수) 만들기

난수 : Math.random()

 

for(반복문)

조건을 만족하는 동안 블록 {}을 반복- 반복횟수를 알 때 사용하기 적합하다.

 

for (초기화;조건식;증감식) {

수행될 문장

}//조건식이 거짓일때까지 반복

 

ex)

for(int I=1;i<=5;I++) {

System.out.println(“I can do it”);

}

 

중첩 for

for문 내에 또 다른 for문을 포함시킬 수 있다.

 

향상된 for문

배열과 컬렉션에 저장된 요소에 접근할 때 기존보다 편리한 방법으로 처리할 수 있도록

for문의 새로운 문법이 추가되었다

for ( 타입 변수명 : 배열 또는 컬렉션) {

//반복할 문장

}

 

while

조건을 만족시키는 동안 블록 {}을 반복 - 반복횟수를 모를 때 사용하기 적합하다.

while (조건식) {

//조건식의 연산결과가 참인 동안, 반복될 문장들을 적는다.

}

while문이 먼저 만들어졌기 때문에 for문과 바꿀 수 있지만, for문이 더 간결하다.

 

*while문의 조건식은 생략불가 

무한 반복문 for문은 for(;;) for{}로도 무한반복이 가능하지만 while은 true 생략이 불가능하다.

 

do-while

블록 {}을 최소한 한 번 이상 반복 사용자의 입력을 받을 때 유용하다

do {

//조건식의 연산결과가 참일 때 수행될 문장들을 적는다. (처음한번은 무조건 실행)

} while (조건식); //끝에 ';'를 붙이는게 중요하다 

 

break

자신이 포함된 하나의 반복문을 벗어난다

while(true) { 

if(sum > 100)

break; //break문이 수행되면 이 밑의 부분을 실행하지 않고 벗어난다 

++i;

sum += i;

}

무한 반복문에서는 조건문과 break문이 항상 같이 사용된다. 

그렇지 않으면 프로그램이 종료되지 않을 것이다. 

 

continue

반복문 내에서만 사용될 수 있다.

자신이 포함된 반복문의 끝으로 이동 - 다음 반복으로 넘어간다

for문의 경우 증감식으로 이동하고 while문과 do-while문의 경우 조건식으로 이동한다.

 

전체 반복중에서 특정 조건시 반복을 건너뛸 때 유용하다

 

이름붙은 반복문

반복문에 이름을 붙여서 하나이상의 반복문을 벗어날 수 있다.

(break문은 근접한 단 하나의 반복문만 벗어날 수 있음)

중첩 반복문 앞에 이름을 붙이고 break문과 continue문에 이름을 지정해 줌으로써 

하나 이상의 반복문을 벗어나거나 반복을 건너뛸 수 있다. 

'백엔드 > Java의 정석' 카테고리의 다른 글

TIL 정리_06  (0) 2022.02.21
TIL 정리_05  (0) 2022.02.21
TIL 정리_03  (0) 2022.02.18
TIL 정리_02  (0) 2022.02.17
TIL 정리 _01(Java)  (0) 2022.02.16