[JAVA] 제어문

jeffyun3061 ㅣ 2023. 12. 6. 20:31

제어문

 

프로그래밍의 존재 이유와 목적을 꼽으라고 한다면 사용자의 input에 따라 달라지는 output을 자동화하기 위함이라 할 수 있다

이를 위해 필요한 것은 ~한 input인 경우, ~한 output을 만들어 내는 조건문

그것이 반복되는 연산과정을 자동화 하기 위한 반복문

 

조건문과 반복문을 포괄하는 명칭으로 프로그램의 순차적인 흐름을 제어하므로 이때 사용되는 명령문을 제엄누이라 함

 

제어문에 속하는 명령문들은

 

 

 

제어문 - if문, if/else 문

 

if문

 

if(조건식) {

조건식의 결과가 참일 때 실행하고자 하는 명령문;

}

 

if / else 문

 

if (조건식) {

조건식의 결과가 참일 때 실행하고자 하는 명령문;

}else {

조건식의 결과가 거짓일 때 실행하고자 하는 명령문;

}

 

if 가 있다고 반드시 else가 있어야 하는 것은 아님

 

 

 

if문 

if/else 문

if/else if / else 문

swittch

 

myMoney = 10000

택시 요금이 : 10000원

버스 요금 : 3000원

킥보드 : 2000원

걸어가기 : 0원

 

if(조건식1) {

조건식 1의 결과가 참일 때 실행하고자 하는 명령문;

} elsse if(조건식2) {

조건식 2의 결과

 

 

 

 

제어문 - 삼항연산자

 

문법

 

                   A            B              C

결과값 = 조건식 ? 반환값1 : 반환값2

 

물음표(?) 앞의 조건식에 따라 결괏값이 참(true)이면 반환값1을 반환하고, 결괏값이 거짓(false)이면 반환값2를 반환

 

자바에서는 간단한 if / else 문은 삼항 연산자를 이용하여 간결하게 표현

 

 

if(answer.equal(input)){          (조건식)

"문이 열렸습니다."                   (반환값1)

}else{

"비밀번호가 틀렸습니다."          (반환값2)

 

 

제어

}

 

 

 

 

 

제어문 - switch 문

 

기본 문법

 

switch (조건 값){

case 값 1:

조건 값이 값1일 때 실행하고자 하는 명령문;

breack; // switch문을 빠져나가는 문구

case 값 2 : 조건 값이 값2일 때 실행하고자 하는 명령문;

break;

 

...

default: 조건값이 어떠한 case 절에도 해당하지 않을 때 실행하고자 하는 명령문;

break;

 

}

 

일반적으로 break문을 반드시 넣어줘야 하고, 생략하는 경우는 그 다음 case문도 비교하고자

할때는 생략이 가능.

 

if /else if / dlse 를 사용해도 동일하나, 가독성이 좋고 특정한 조건의 경우가 열거형으로 몇가지로 정해져 있을 때 주로사용

 

 

int input = sc.nextint();

switch (input) {

case 1:

println("1번을 입력했습니다.")

breack;  //switch문을 빠져나가는 문구

 

case 2: 조건 값이 값 2일때 실행하고자 하는 명령문

break;

default;

조건 값이 어떠한 case 절에도 해당하지 않을 때 실행하고 자하는 명령문;

break;

}

 

 

switch 고객센터 출력 예제

원하시는 번호를 입력주세요

 

1. 대출서비스 입니다.

2. 예금

3. 적금

 

0. 상담사연결입니다. 그외: 잘못누르셨습니다.

 

 

제어문 - 반복문(loop)

while 문

do / while 문

for 문

Enhanced for 문

 

---

기본자료형 가지고 나오는 문제들 이제 풀수 있음

배열 [] , 리스트 , string 은 빼고

---

 

 

제어문 while문

 

while (조건식) {

조건식의 결과가 참인 동안 반복적으로 실행하고자 하는 명령문;

}

 

while 문은 특정 조건을 만족 할 때 까지 계속해서 주어진 명령문을 반복

while 문 내부에 조건을 false 로 만드는 로직이 존재하지 않을 경우엔 프로그램이 무한 루프

(infinite loop)

무한 loop가 default

 

 

a = 10

while (a>1){

조건식의 결과가 참인 동안 반복적으로 실행하고자 하는 명령문;

a --;

a ++;

}

 

 

 

while 문 사용 해서 2~10 까지 출력 

 

 

 

a=0;

do{

조건식의 결과가 참인 동안 반복적으로 실행하고자 하는 명령문;

}while (a<0)

 

 

do while 문

 

do / while 문은 일단 루프를 한 번 실행한 후에 조건식을 검사

do {

조건식의 결과가 참인 동안 반복적으로 실행하고자 하는 명령문;

} while (조건식);

 

do while의 경우 많이 사용되지는 않는 구문. for / while 로 대체가 가능하기 때문에.

다만, 무조건 1번은 실행이 되므로 첫번째 입력값을 검증하는데 사용되기도 함. 

 

 

for 문

 

for문은 while 문과는 달리 자체적으로 초기식,조건식,증ㅇ감식을 모두 포함

반복문이 종료가 될 수 있도록 기본 설계가 되어있다는 점에서 while문과의 차이

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

{조건식의 결과가 참인 동안 반복적으로 실행하고자 하는 명령문;

 

 

break 

반복문을

 

for(int i=0; i<10; i++){

if(i==5){

continue;

}

print("hello world");

}

 

 

continue를 사용해서 홀수만 출력되도록(1~10까지 수 중에 )

 

코테 ==> 수능

 

 

int num = 1234;

 

int result = 4321;

-------

int a = ; int b = 36;

int answer = 0 ;

for(int i = 1 ; i<=24;i++)}

 

 

 

Enhanced for 문

 

배열과 커렉션에서 매우 많이 사용되는 문법으로서 index로 배열이나 리스트 등을 가져오는 것이 아닌, 배열ㅇ릐 값 그대로를 가져오는 방식.

 

기본문법

for(타입 변수이름 : 배열이나 컬렉션 이름){

배열의 길이 만큼 반복적으로 실행하고자 하는 명령문

}

 

Enhanced for 문은 명시한 배열이나 컬렉션의 길이만큼 반복되어 실행

 

Enhanced for 문은 요소를 참조할 때만 사용하는 것

요소의 값을 변경하는 작업에는 불가

배열 요소는 배열 요소 그 자체가 아닌 배열 요소의 복사본 이기 때문

 

int a = 10;

a += 10;

 

 

JAVA의 메모리 구조

 

 

기본형 데이터는 > 스택에 

 

참조형 데이터 > 힙에 저장 하고실제, 스택에도 저장을 함(힙에 주소값만)

 

스택 메모리 공간 , 힙 메모리 공간

 

배열출력시 toString()을 써야 하는 이유

메소드영역

빌드되어 만들어진 소스코드(클래스등), 정적 변수(static)등이 저장되어 코드 전역에서 사용가능한 공간

 

스택영역

지역변수, 매개변수, 기본형 자료, 객체의 주소값 등을 저장

 

힙영역

Heap 메모리는 애플리케이션 실행 동안 생성 되는 모든 클래스 인스턴스와 배열을 저장하는 곳

참조형 변수인 객체 변수 등은 스택 메모리에는 힙메모리의 주소만 저장해두고 실질적인 값은 힙 메모리에 저장

 

 

 

지역변수, 전역변수

자바변수 유효범위

자바에서의 if 문 블록, for문 블록 등 안에서 선언된 변수는 블록 밖에서 참고할 수가 없고 해당 블록내에서만 유효

지역변수 : {} 로 구분되는 영역에서만 유효한 변수

현재 단계에서는 {}열고, 닫는 영역까지만 변수의 범위가 유효하다는 것 숙지

전역변수 : 클래스 전역에 접근할수 있는 변수

 

 

 

다중 반복문

 

반복문 안에 반복문이 들어가 있는 형태, 2중 뿐만 아니라 3중, 4

 

 

 

int num = 3;

for