Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- session.getAttribute
- javaBeans
- Import
- 동기부여
- 동기 부여
- 파일 호출
- BEANS
- 자바빈즈
- static
- ;
- session.removeAttribute
- session.setAttribute
- 페이지 이동
- \
- Alert
- target
- 로그인화면
- 파일호출
- "
- 미래직장
- scanner
- iframe
- 팝업창
- 버리자
- 영감
- 빈즈
- opener
- 향상된 for문
- 페이지이동
- 데이터사이언스
Archives
- Today
- Total
갈림길 이정표
Call by Value vs. Call by Reference 본문
Programming Language/Java 마스터하기(feat. 이것이 자바다)
Call by Value vs. Call by Reference
이몽뇽 2020. 7. 20. 01:19package pack1;
public class CallBy1 {
int a = 10, b = 20; //기본형 변수
int c[] = {1, 2}; //참조형 변수 (new int c[0] = 1, c[1] = 2 한거랑 같음)
}
package pack1;
public class CallBy2 {
public void ex(int a, int b) { //인수로 기본형 변수 사용
int imsi = a;
a = b;
b = imsi;
System.out.println("1. 메소드 내의 a: " + a + ", b: " + b); //두개의 기억 장소의 값을 맞 바꿈 총 3개의 변수 필요
}
public void ex(CallBy1 data) { //인수로 참조형 변수 사용 (method overloading)
int imsi = data.a; //가장 많이 쓰이는 참조형 변수
data.a = data.b;
data.b = imsi;
System.out.println("2. 메소드 내의 a: " + data.a + ", b: " + data.b); //두개의 기억 장소의 값을 맞 바꿈 총 3개의 변수 필요
}
public void ex(int[] ar) { //인수로 참조형 변수 사용
int imsi = ar[0];
ar[0] = ar[1];
ar[1] = imsi;
System.out.println("3. 메소드 내의 a: " + ar[0] + ", b: " + ar[1]); //두개의 기억 장소의 값을 맞 바꿈 총 3개의 변수 필요
}
}
package pack1;
public class CallByMain {
public static void main(String[] args) {
//메소드 호출시 argument로 값 또는 주소 전달 할 수 있다.
CallBy1 my = new CallBy1();
CallBy2 your = new CallBy2();
System.out.println("0. 원래 a: " + my.a + ", b: " + my.b); //기억장소 4개 (a,b,my.a,my.b)
your.ex(my.a, my.b); //부르면서(CallBy하면서) 값을 부여
//인수로 기본형 변수 (값) 전달 -> ?
System.out.println("1-1. 수행 후 a: " + my.a + ", b: " + my.b);
System.out.println();
your.ex(my); //인수로 참조형 변수 (주소) 전달 -> my.a, my.b
System.out.println("2-1. 수행 후 a: " + my.a + ", b: " + my.b);
System.out.println();
your.ex(my.c);
System.out.println("3-1. 수행 후 c[0]: " + my.c[0] + ", c[1]: " + my.c[1]);
}
}
'Programming Language > Java 마스터하기(feat. 이것이 자바다)' 카테고리의 다른 글
[java] DB driver load, DB 연결, 자료 읽기 (0) | 2020.08.04 |
---|---|
[9. 중첩 클래스와 중첩 인터페이스] (0) | 2020.07.24 |
[8. 인터페이스] (0) | 2020.07.19 |
[7. 상속] (1) | 2020.07.19 |
[6. 클래스] (5) | 2020.07.19 |
Comments