Java4

Junhyeok Choi·2023년 2월 12일

Java 101

목록 보기
5/10

4

제어문

1. Historic /Computer Engineering

제어문은 2가지가 있음. 제어문이란 건 무엇인가?
모든 프로그램은 순서가 있다. 흘러내려가다가 순서를 skip하게 할 수도 있고, 흐름을 반복적으로 진행시킬 수도 있겠죠 즉 제어문에서 제어한다는 것이 도대체 무엇을 제어한다는 것이냐?
흐름을 제어하는 것이다.

For문 While문이고, 이를 제어할 수 있는 건 딱 2개. - break / continue.

2. Syntax

if문은 크게 3가지.
(1) 그냥 if문을 하나만 쓰는 게 더 많다.
--> 해도 되고 안해줘도 그만일 때 쭉 내려가다가 VIP 고객이면 뭐 하나 더 줘...할 때 하나 더 주고 싶을 때. 이 때 if else가 필요한가요? 일반 고객들도 뭐 따로 해줘야하나요? 안해줘도 되는데 사람들이 else를 습관적으로 씀.
(2) if - else 많이는 안씀.
--> 모 아니면 도
반드시 if else를 거치고 싶을 때 이걸 씀. 이건 가능한 지양해라.
(3) 여러개의 조건.
--> case

(4) 삼항연산자
--> 할 수는 있지만, 많이는 안 씀.

자주 실수하는 부분 = 참조변수 잘못 활용하는 경우.

//		if(grade == "VIP") {
//			이렇게 쓰면 안된다. 참조변수 기억나지?
//		}
		
// 		아래는 올바르게 쓴 부분
		if(grade.equals("VIP")) {
			System.out.println("실행...");
            reutrn;
		}

IF를 멈추는 방법

return;
클래스 안에 있는 아래의 모든 함수를 실행시키지 않는다. 그 자리에서 끝을 낸다.

		if(grade.equals("VIP")) {
			System.out.println("실행...");
            reutrn;
            return이 생기면, 가다가 이 조건이 만족되면 아래에 있는 흐름들이 실행되지 않는다.
		}

SWITCH 에서 중요한 점 : break;를 가능한 꼭 써줘야함.

break;를 안 써주면 switch는 반복 성격이 있어서 계속 돌아갑니다.
case에는 무조건 정수만 들어갈 수 있습니다. 실수는 안됩니다.

왜 쓰냐? 이걸? 2가지 경우인데,
casecade한 경우일 때 super관리자가 +100, + 90 + 10을 다 갖고 싶고
중간 관리자는 + 90 +10을 갖고 싶을 때...이런 경우에는 if else로 쓰면 복잡하다.
switch의 작동원리는 casecade이다. 즉, 폭포식임.

	switch(grade) {
	case "FVIP" : 
		score += 100;
		break;
	case "FGOLD" :
		score += 90;
		break;
	case "MVIP" :
		score += 100;
		break;
	case "MGOLD" : 
		score += 90;
		break;
	default :
		score += 10;
	}

아니 이런 거 다 if else로 되는데 왜 이걸 쓰냐? 사실 이런 경우에는 잘 안쓰고, 아래와 같이 쓸려고 이걸 쓴다.

	switch(grade) {
	case "MVIP" :
	case "FVIP" : 
		score += 100;
		break;
	case "MGOLD" : 
	case "FGOLD" :
		score += 90;
		break;
	default :
		score += 10;
	}

폭포식 : break를 지우면,
VIP는 + 100 + 90 + 10을 가질 수 있고
GOLD는 + 90 + 10을 가진다.
이렇게 만약 권한부여를 할 때는 switch가 매우 편리할 것이다.

	switch(grade) {
	case "MVIP" :
	case "FVIP" : 
		score += 100;

	case "MGOLD" : 
	case "FGOLD" :
		score += 90;
		
	default :
		score += 10;
	}
	

반복문

For문

언제 쓰는가?

반복되어야할 횟수가 정해져있을 때는 for문
반복될 횟수는 모르지만, 어떤 상황을 만족했을 때 그만두고 싶은 while문
간단하게 말해서, 횟수를 알면 for문, 모르면 while문
학습 포인트는 for문과 while문의 흐름을 기억해야함.
특히, 조금 더 직설적으로 말해서, 그림 그릴 수 있으면 된다.

하지만, 조금 더 큰 차이는...integer i가 밖에 있냐 안에 있냐의 차이가 더 큰 차이이다.
integer i 를 나중에 지정할 수 있도록 하려면, While문을 쓰는 게 좋다.

While문

While문은 초기값을 안정해주는 실수를 하는 경우가 많다.

BREAK와 CONTINUE

아주 간단하게 총정리
break = 닫아! 완전 종료.
continue = 넘어가! 이번 건은 그냥 넘어가.
return = 닫아! 근데 반복문이 아니고 지금까지 한것만 남겨두고 내 아래 모든 것들을 다 무시하고 닫아.

break는 가장 가까운 반복문 중괄호를 캔슬하는 것이다.
내가 끝내고 싶은 반복문에 label을 지정하면,
loopy: for (~) {
}
break loopy;

continue가 있다는 것은 if가 있다는 뜻이다.
continue의 의미는 해당 조건일 때는 그냥 skip하라는 의미이다.이건 반복문을 닫아버리라는 break와는 다르다.반복문을 닫는 것이 아니라 그냥 넘어가라는 이야기다. 이건 거의 대부분 if문과 없이 쓰이는 경우는 없다. 만약에 for문 안에 continue가 있다면, for문을 닫아버리므로 애초에 그냥 아무 메소드를 돌리지 않는다.

Reference : https://velog.io/@subin0214/break-continue-return-%EC%B0%A8%EC%9D%B4
break, continue, return은 어떤 언어에서나 공통적으로 사용된다.

  1. break문
    가장 가까이 있는 하나의 반복문을 벗어날 때 사용한다.
    루프(loop)가 모두 끝나지 않아도 반복문에서 탈출한다.
  1. continue문
    반복문을 빠져나가는 것이 아닌, 반복문을 건너 뛴다.
    반복문이 0부터 3까지 돈다고 가정했을 때 -> 0 1 2 3
    if (i == 2) { continue } 라고 하면 -> 0 1 3

  2. return문
    해당 함수에서 탈출을 할 때 사용한다. ( 반복문만 탈출 X, 함수 자체에서 탈출(함수를 종료시킴))
    뒷 줄에 코드가 더 있어도 종료된다.
    void형인 메소드에서만 retrun;으로 사용가능
    자료형이 명시되어있는 메서드에서는 return 명령어; 형태로 사용해야 한다.

profile
Just do it jun

0개의 댓글