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 | 31 |
Tags
- 스프링 부트 쇼핑몰 프로젝트 with JPA
- JPA
- 백준
- Spring Security
- 자바
- 프로그래머스
- spring
- 네트워크
- CS
- 파이썬
- 데이터베이스
- DB
- 자료구조
- CS지식
- springboot
- 시큐리티
- 자바스크립트
- 데이터
- Flutter
- Oracle
- 리눅스
- Java
- 플러터
- 스프링부트
- backjoon
- javascript
- baekjoon
- python
- 스프링
- postgresql
Archives
- Today
- Total
Jin's Dev Story
[JAVA] Call By Value와 Call By Reference 본문
Call By Value
- 인자로 받은 값을 복사하여 처리하는 방식
- Call By Value에 의해 넘어온 값을 증가 시켜도 원래의 값이 보존됨
- 값을 복사하여 넘기기 때문에 메모리 사용량이 늘어남
Call By Reference
- 인자로 받은 값의 주소를 참조하여 직접 값에 영향을 주는 방식
- 값을 복사하지 않고 직접 참조하기 때문에 속도가 빠름
- 원래의 값에 영향을 주는 리스크가 존재함
public class Main {
public static void main(String[] args) {
Foo f = new Foo("f");
System.out.println(f.string);
changeReference(f); // It won't change the reference!
modifyReference(f); // It will modify the object that the reference variable "f" refers to!
System.out.println(f.string);
}
// 값에 의한 호출
public static void changeReference(Foo a) {
Foo b = new Foo("b");
System.out.println(b.string);
a = b;
System.out.println(a.string);
}
// 주소에 의한 호출
public static void modifyReference(Foo c) {
c.setAttribute("c");
System.out.println(c.string);
}
}
// f
// b
// b
// c
// c
'Programming Language > JAVA' 카테고리의 다른 글
[JAVA] BigInteger (0) | 2023.10.09 |
---|---|
[JAVA] List & Set &Map (0) | 2023.08.15 |
[JAVA] 지역 변수 & 전역 변수 & static(정적) 변수 (0) | 2023.08.15 |
[JAVA] 인터페이스(interface) (0) | 2023.08.12 |
[JAVA] 가비지 컬렉션(Garbage Collection) (0) | 2023.08.01 |