일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- java
- 백준
- Redux
- vscode
- DP
- react
- 안드로이드
- frontend
- Graph
- CS
- LeetCode
- 다이나믹 프로그래밍
- Python
- BFS
- git
- Data Structure
- 리트코드
- DFS
- VIM
- 동적 계획법
- db
- 프로그래머스
- 알고리즘
- Database
- 자바
- 그레이들
- network
- TypeScript
- Algorithm
- Javascript
Archives
- Today
- Total
늘 겸손하게
Java 객체 인자로 전달, 레퍼런스 본문
안녕하세요 besforyou입니다
1. 기본 타입의 값이 전달되는 경우
코딩을 하다 보면 메소드(멤버 함수) 호출하는 경우가 많습니다.
기본 타입의 값이 메소드의 인자로 전달될 때는 값이 매개 변수에 복사되어 전달이 되기 때문에 실인자 값은 변경되지 않습니다.
public class CallByValue {
public static void main(String args[]) {
int n = 10;
increase(n);
System.out.println(n); // output : 10
}
static void increase(int m) {
m = m + 1; // n 값은 변하지 않는다.
}
}
위 코드를 보면 Increase 메소드가 n값을 1 증가시킬 것 같지만 n값이 매개변수에 복사되어 전달되기 때문에 n값은 변하지 않습니다.
2. 객체가 전달되는 경우
객체를 메서드의 인자로 전달하면 객체의 레퍼런스가 매개변수에 복사됩니다. 즉, 메소드가 실인자 객체를 공유할 수 있게 됩니다.
public class ReferencePassing {
public static void main(String [] args) {
Circle pizza = new Circle(10);
increase(pizza);
System.out.println(pizza.radius); // output : 11
}
static void increase(Circle m) {
m.radius++; // main 메소드의 pizza 객체의 radius 값이 증가
}
}
객체의 레퍼런스가 매개변수에 복사되기 때문에 pizza 객체의 radius값이 증가합니다.
'Programming > Java' 카테고리의 다른 글
백준 BufferedReader, BufferedWriter로 입출력 (0) | 2022.02.09 |
---|---|
Java Thread 기초 이론 (0) | 2022.02.08 |
Java 특징 정리 (0) | 2022.02.07 |
Java Abstract methods and Classes ( 추상메소드 , 클래스 ) (0) | 2021.09.08 |
Linux 환경에서 Java 파일 컴파일 및 실행 (0) | 2021.06.29 |