자바 학습 & 복습 10일차 - return 문 & 기본형, 참조형 매개변수, 참조형 반환타입

728x90

return문 반환값

void일 경우에 return을 써서 조건이 맞지 않으면 호출문으로 되돌아감

void가 아닐경우엔 return을 반드시 써서 반환값을 지정해야함

 

따라서 아래의 코드같은 경우에는 number 값이 9를 초과했으므로 출력문이 실행되지 않음

public class CardClss{
	
	public static void main(String[] args) {
//	선언부	
	test tt = new test();
	tt.gugu(10);
	tt.gugu(4);
	}
}

class test{
//	반환타입이 void일 경우 return문 사용하여 조건이 맞지 않을경우 호출한 곳으로 되돌리기 가능
	void gugu(int number) {
		if(!(0<number && number<10)) 
			return;
			for(int i = 1; i < 10; i++) {
				System.out.printf("%d x %d = %d\n", number, i, i*number);
				}		
	//		void일 경우 return문은 optional이지만 void가 아닌경우는 return문을 반드시 써야함
	}
}

//출력문
//4 x 1 = 4
//4 x 2 = 8
//4 x 3 = 12
//4 x 4 = 16
//4 x 5 = 20
//4 x 6 = 24
//4 x 7 = 28
//4 x 8 = 32
//4 x 9 = 36

기본형 매개변수

이 기본형 매개변수 같은 경우에는 지역변수 x를 따로 선언해서 test 클래스의 주소값을 알지 못한다.

test 클래스의 값만 지정해서 1000으로 바꿨기 때문에 본래 값인 x변수는 값의 변동이 없다.

따라서 기본형 매개변수는 읽기(read)만 가능하고 쓰기(wrtie)는 불가.

public class CardClss{
	public static void main(String[] args) {
		test ts = new test();
		ts.x = 10;
		System.out.println("기본 x: " + ts.x);
		change(ts.x);
		System.out.println("바꾸고 난 후의 x: " + ts.x);
	}
	static void change(int x) {
		x = 1000;
		System.out.println(x);
	}

}
class test{
	int x;
	
출력문: 
기본 x: 10
1000
바꾸고 난 후의 x: 10
}

참조형 매개변수 

기본형 매개변수와는 다르게 test 클래스의 ts 변수를 직접 불러와서 그 변수에 x 값을 직접 대입했다.

따라서 본래는 10이였지만 1000으로 값이 재입력되었기 때문에 본래 값이 변동됨.

참조형 매개변수는 읽기(read)와 쓰기(write) 둘다 가능한 매개변수이다.

 

참조형 매개변수는 변수를 컨트롤할 리모콘 자체를 줬다고 하면 이해가 편함

객체 주소를 주고받는다고 이해하는게 좋을듯

+ 같은 class 내에 있으면 참조변수 (ts) 를 선언하지 않아도 값 호출 가능

 

public class CardClss{
	public static void main(String[] args) {
		test ts = new test();
		ts.x = 10;
		System.out.println(ts.x);
		change(ts);
		System.out.println(ts.x);
	}
	static void change(test ts) {
		ts.x = 1000;
		System.out.println(ts.x);
	}
	static void change(int x) {
		x = 1000;
		System.out.println(x);
	}
}
class test{
	int x;
}
출력문: 
기본 x: 10
1000
바꾸고 난 후의 x: 1000

참조형 반환타입

아래 주석 설명 참조

public class CardClss{
	public static void main(String[] args) {
		test ts = new test();
		ts.x = 10;
		System.out.println(ts.x);
		
		test ts1 = copy(ts); //임시변수를 새 class 변수인 ts1에 배정
		System.out.println(ts1.x); //본래의 값 ts.x와 동일 값이기 때문에 동일하게 10이 출력
		
		
	}
	static test copy(test ts) { //새로운 class 선언문과 일치해야함(test)
		test tmp = new test(); // 새 클래스로 임시 tmp 변수 선언
		tmp.x = ts.x; //임시 변수에 본래 값인 ts.x를 배정
		return tmp; //임시변수 return
		}
}
class test{
	int x;
}

출력문:
10
10
728x90