[코드스쿼드 코코아 과정] break, continue, 함수, return

Kyu·2020년 11월 3일
0

1. break

break는 loop에서 빠져나오는 역할을 한다.

입력:

public class MyClass {
  public static void main(String[] args) {
    for (int i = 0; i < 10; i++) {
      if (i == 4) {
        break;
      }
      System.out.println(i);
    }  
  }
}

출력:
0
1
2
3

2. continue

continue는 loop에서 한 번의 반복문을 스킵한다.

입력:

for (int i = 0; i < 10; i++) {
  if (i == 4) {
    continue;
  }
  System.out.println(i);
}

출력:
0
1
2
3
5
6
7
8
9

출처 https://www.w3schools.com/

3. return

return 이란?

void 함수 내에서 return 은 함수를 마치는 역할(종료) 을 하고 return a; 를 하면 a 란 값을 돌려준다. (값의 반환) 출처https://cordingmilk.tistory.com/32

4. 함수 (메소드)

자바에서 함수란, 메소드와 같다고 보면 된다.

반복문, 조건문, 변수, 상수 등이 프로그래밍 언어의 기본중의 기본, 불이라고 비유할 수 있다.
어플리케이션이 작으면 유지보수가 필요없는 간단한 코드들로 이루어질 수 있겠지만 어플리케이션이 커지면 커질 수록 예상치 못한 버그나 에러들들이 발생할 수 있다.
그것을 최소화 할 수 있는 다양한 도구들 중 하나가 메소드라고 할 수 있다.

직접 메소드를 만드는 것을 정의라고 하고 만들어진 메소드를 실행하는 것을 호출이라고 한다.
컴퓨터는 괄호 열고 닫고 뒤에 중괄호가 나오면 정의라고 알고, 뒤에 세미콜론이 나오면 호출이라고 알도록 약속되어있다.

메소드는 같은 기능을 쉽게 불러와서 사용할 수 있기 때문에 재활용성이라는 특징과 코드량이 줄어들고 유지보수가 유리해진다.

그 중에서도 메소드의 핵심가치는 재활용이라고 할 수 있다. 입력과 출력이라는 개념을 아는것은 재활용이라는 가치를 100% 활용할 수 있는 개념이다.

메소드에서 입력값을 받는 방법은 메소드의 괄호안에 변수 타입과 이름을 지정해주고 메인메소드에서 그 메소드를 불러온다. 괄호안에는 원하는 데이터를 입력한다.

public class Main {

	public static void MethodName (int limit) {
		int i = 0
    	while (i < limit) {
    		System.out.println(i);
       	 i++;
       	 }
    }
    
   	 public static void main(String[] args) {
    		MethodName(원하는 데이터값);
    }
}

출력은 return과 관계가 있다.

자바가 프로그램을 읽는 중에 리턴을 만나게되면 뒤에 무엇이 있던간에 메소드를 종료시키고 메소드의 값으로 반환하게 되어있다. 밑에 코드에서는 output이 메소드 numbering의 값으로 외부로 반환이 되는 것이고 그 값이 메인메소드 안에 result의 값이되어서 프린트되어 나온다.

public class MethodDemo6 {
    public static String numbering(int init, int limit) {
        int i = init;
        
        String output = "";
        while (i < limit) {
            
            output += i;
            i++;
        }
    
        return output;
    }
 
    public static void main(String[] args) {
        
        String result = numbering(1, 5);
     
        System.out.println(result);
    }

출처 https://opentutorials.org/course/1223/5369

여기서 numbering 옆에 String의 의미는 String a; 에서 a는 문자열이라는 것을 명시적으로 선언하는 것과 같이 메소드에서 반드시 문자열을 리턴하게 된다라는 뜻을 갖게 된다. 그러므로 메인메소드 안에 result는 반드시 문자열 타입 String 을 받는 컨테이너여야 한다.

main 앞에 void라는 것은 리턴 값을 받지 않는 다는 것을 의미한다.

그렇다면 왜 리턴값을 굳이 반환하는 값을 꺼내놓아야할까?

결론적으로 말하면 부품으로서의 가치를 높이기 위해서라고 할 수 있다. 예를 들어 이 반환값을 단순히 텍스트로 출력하는 게 아니라 그 출력값을 메일로 보내라 파일에 기록해라 등 다양하게 사용하게 된다는 것을 알게되면 리턴값의 그 효용성을 알 수있다.

그렇다고 리턴 값이 메소드에 하나만 들어갈 수 있는 것은 아니다

public class ReturnDemo2 {
    public static String num(int i) {
        if(i==0){
            return "zero";
        } else if(i==1){
            return "one";
        } else if(i==2){
            return "two";
        }
        return "none";
    }
 
    public static void main(String[] args) {
        System.out.println(num(1));
    }
}

리턴값을 복수로 받고 싶다면 배열로 받으면 된다.

profile
TIL 남기는 공간입니다

0개의 댓글