java 공부2

김준석·2023년 7월 31일

java

목록 보기
2/2

switch문

case에 따라 나뉜다는 것이 특징이다.
java 14부터는 개선된 switch를 제공한다

public class example {
		static String many(int n) {
			return switch(n) {
			case 1 -> "1개";
			case 2 -> "2개";
		};//하나의 실행문이므로 마지막에 세미콜론(;)이 필요하다.
	}
}

위 코드는 예외처리가 제대로 적용되지 않은 코드다
왜냐하면 case 1과 2가 아닌 경우에 String을 return하지 못하기 때문이다.
이러한 경우를 막기 위해 default를 적용해주어야 한다.

public class Example {
		public static void main(String[] args){
        	System.out.println(many(1) + " 있다.");
            System.out.println(many(2) + " 있다.");
            System.out.println(many(3) + " 있다.");  
		static String many(int n) {
			return switch(n) {
			case 1 -> "1개";
			case 2 -> "2개";
            default -> "내 마음대로";
		};
	}
}
-----------------------------------------------------
Console
1개 있다.
2개 있다.
내 마음대로 있다.

문제 1

1)switch 문에서 사용할 수 있는 variable type은 int 뿐만 아니라 double도 된다.(O, X)->X
2)variable x의 value가 1일 때, 다음 코드의 실행 결과는?

switch(x){
   case 0 :
    	System.out.print(x);
   case 1 :
    	System.out.print(x + 1);
   case 2 :
    	System.out.print(x + 2);
   default : 
   		System.out.print(x + 3);

->234(break문이 없기 때문)


Method란

일종의 function 혹은 procedure
특정 연산을 수행하기 위해 실행문을 모아둔 block
코드 재사용성과 가독성을 높이기 위해 사용
modularization을 통해 가독성을 높여 프로그램의 퀄리티를 향상시킴

Method는 Header와 Body로 구성
Header는 Access Modifier(접근 지정자), return type, method name, parameter로 구성
Body는 실행할 코드를 나열

예시

public static int sum (int i1, int i2){
	int sum = 0;
    for(int a = i1; a<= i2; a++)
    	sum+=a;
    return sum;
}

주의사항
1) Header의 return type과 Body에서 실제 return되는 value의 type은 일치해야 한다.
2) parameter가 여러 개인 경우, 같은 type이여도 따로 따로 작성을 해주어야 한다.
3) 실행문이 여러 개인 경우, 중간에 호출이 발생하면 제어가 호출된 method(callee)로 넘어갔다가 마지막 실행문을 마친 후 호출된 method(caller)로 돌아온다.

그러나 return문을 만나면 실행 도중에도 caller로 제어를 넘길 수 있다.

Method를 호출할 때는 parameter에 대응하는 value나 variable을 제공해야 하는데, 이를 argument(인수)라고 한다. 그리고 argument는 parameter의 순서, 타입, 갯수가 일치해야 한다.

call by value를 사용하면 중간에 parameter의 value가 변하더라도 argument에는 영향이 가지 않는다. 이름이 같다고 하더라도 method를 호출한 본체 쪽에선 값이 변하지 않는 것이다.

그러나 call by reference를 사용하면 parameter의 value가 변하면 argument 역시 똑같이 변한다.

이는 value를 copy하는지, address를 copy하는지에 따라 다르다
(참고로 java는 pointer가 없기 때문에 array와 class만이 call by reference로 작동한다.)

Method Signature란

method의 이름, parameter의 갯수, parameter의 data type, parameter의 순서를 의미한다.

이 중 하나라도 다르면 다른 method이다.

이름이 같지만 signature가 다른 method를 define하는 것을 method overloading이라고 한다.

문제 2

1) main method는 return data가 없기 때문에 return type으로 (void)를 사용한다.
2) method name은 같지만 parameter 갯수나 type 등을 다르게 define하는 것을 (method overloading)이라고 한다.

profile
코린이

0개의 댓글