일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 이펙티브 자바
- java
- 스터디
- package-private
- 알고리즘
- 프로그래밍
- 컴퓨터과학
- 디지털
- 운영체제
- 자바
- github
- 메모리
- 신입사원
- 신입
- IT
- spring
- 깃
- 우리카드
- 개발
- 뮤텍스
- 깃허브
- Effective Java
- 세마포어
- 스프링
- Public
- CS
- 공채
- OS
- 컴퓨터공학
- 정보처리기사
Archives
- Today
- Total
주니어 개발자 성장기
(22.09.08)Java는 call by reference를 쓰지 않는다. 본문
call by reference를 쓰는 언어에서는 메서드를 호출할 때 객체를 전달받으면 해당 객체를 아예 다른 것으로 바꿀 수 있지만, java는 객체 참조를 포함한 모든 매개변수가 값으로 전달되기 때문이다.
자바는 객체 변수를 호출 시에 복사를 해서 참조를 전달하기 때문에 해당 객체 변수에 새로운 객체를(new) 할당해도 기존의 객체 변수의 참조에는 아무 변화가 없다.
public void change(Employee e) {
e = new Emplpyee("Nick");
}
public static void main(String[] args) {
Employee e1 = new Employee("Fred");
manager.change(e1);
System.out.println("name =" + e1.getName());
}
즉, 위의 코드를 보면 change 메서드에서 Employee 객체를 호출하지만, 내부적으로는 객체 참조 값을 e에 복사해서 함수에 전달해준다. 따라서, 함수 내부의 인자인 e에 새로운 객체를 할당해도, 함수에 전달된 원래 객체의 참조를 갖고 있는 변수인 e1에는 참조하는 값이 변화가 없기 때문에 계속 Name이 "Fred"인 Employee 객체를 참조하고 있다.
'Java' 카테고리의 다른 글
함수형 인터페이스 (0) | 2023.08.07 |
---|---|
Comparable과 Comparator (0) | 2023.07.15 |