| 일 | 월 | 화 | 수 | 목 | 금 | 토 | 
|---|---|---|---|---|---|---|
| 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
                            
                        
                          
                          - Oracle 18c 설치
 - ora-01722
 - oracle 18c
 - 오라클 캐릭터셋 조회
 - 오라클 캐릭터셋 변경
 - Oracle Express Edition
 - 무료 오라클 설치
 - ORA-12899
 - Oracle 테이블 띄어쓰기
 - Oracle 사용자명 입력
 - Oracle 초기 사용자
 - Orace 18c
 - Oracle 사용자명
 - 무료 오라클 데이터베이스
 - Oracle 18c HR schema
 - Oracle 윈도우 설치
 - oracle
 - ORA-00922
 - 서평단
 - Oracle 18c HR
 - 오라클 캐릭터셋 확인
 - Oracle 테이블 대소문자
 - 윈도우 Oracle
 - 비전공자를 위한 데이터베이스 입문
 
                            Archives
                            
                        
                          
                          - Today
 
- Total
 
The Nirsa Way
[JAVA] 자바 참조형 매개변수 이해하기 (java reference type parameter) 본문
      Development/JAVA
      
    [JAVA] 자바 참조형 매개변수 이해하기 (java reference type parameter)
KoreaNirsa 2022. 5. 8. 13:10반응형
    
    
    
  자바 참조형 매개변수 이해하기 (java reference type parameter)
매개변수는 기본형과 참조형 매개변수로 나눠집니다. 기본형의 경우 값이 복사되지만, 참조형의 경우 해당 인스턴스의 주소를 복사하여 값 자체에 영향을 줄 수 있습니다.
아래 이미지들을 참고하여 본다면 참조형 매개변수의 경우 실제 값을 가져가는것이 아니라, 주소값을 참고하여 접근하고 실제 값이 담긴 객체에 접근하기 때문에 수정이 되는것을 확인할 수 있습니다.
| 기본형 매개변수 | 변수의 값을 읽기만 가능 (read only) | 
| 참조형 매개변수 | 변수의 값을 읽고 수정 가능 (read & write) | 
1. Class01 타입(참조형)의 num 인스턴스 생성 → num의 x에 100 대입 → 출력
아래 이미지와 같이 바로 값이 들어가지 않고, 해당 값이 들어있는 객체의 주소값을 저장하여 접근하는 방식으로 됩니다.

2. method01 메소드 호출 및 num 전달 → num의 주소값 참고 (값 X) → x에 1000 대입 → 출력
method01 메소드를 호출하며 num을 전달합니다. 이때 값이 들어가는것이 아닌 주소값을 참고하며, x에 1000을 대입할 때 실제 그 주소를 가지고 있는 값이 수정 됩니다.

3. method01 실행 후 실제로 값이 변경되었는지 다시 출력
실제로 method01에서 1000을 대입한 후 실제로 값이 변경된것인지 확인을 위한 출력 입니다. , method01 종료된 후 출력한다면 아래와 같이 변경된 값 1000이 출력 됩니다.

4. 테스트 코드
class Class01 {
	int x;
}
public class test {
	public static void main(String[] args) {
		Class01 num = new Class01();
		num.x = 100;
		System.out.println("Class : "+num.x);
		
		System.out.println("method : "+method01(num));
        		
		System.out.println("Class : "+num.x);
	}
	
	static int method01(Class01 test) {
		test.x = 1000;
		return test.x;
	}
}반응형
    
    
    
  'Development > JAVA' 카테고리의 다른 글
| [JAVA] 자바 HashMap Null이 아닌 값 꺼내기 (0) | 2022.05.20 | 
|---|---|
| [JAVA] 자바 인터페이스란? (1) | 2022.05.16 | 
| [JAVA] intellij Run 비활성화 시 해결 방법 (2) | 2022.04.12 | 
| [JAVA] intellij에서 Spring 실행 시 finished with non-zero exit value 1 에러 해결 방법 (0) | 2022.04.05 | 
| [JAVA] 자바 int a = 011 -> 9가 나오는 이유 ( what is "int a = 011" and not 9 why, The literal 09 of type int is out of range ) (1) | 2022.03.16 | 
