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
반응형
'Java > 자바의정석 기초편' 카테고리의 다른 글
자바 학습 & 복습 12일차 - 매서드간의 호출 & 참조, 오버로딩(overloading) (0) | 2022.01.26 |
---|---|
자바 학습 & 복습 11일차 - 인스턴스 & static 매서드 (0) | 2022.01.26 |
자바 학습 & 복습 10일차 - 메서드 선언부 & 구현부 (0) | 2022.01.24 |
자바 학습 & 복습 10일차 - 클래스 정의 (0) | 2022.01.24 |
자바 학습 & 복습 9일차 - 객체 생성 & 사용 (0) | 2022.01.20 |