JAVA/java 실습

[자바JAVA] 변수 기본 예제3 - 참조변수, String의 toString, 주소값

자바칩 프라푸치노 2020. 9. 5. 08:02

안녕하세요 자바칩 프라푸치노입니다. 

오늘도 공부를 달려봅시다!

 

오늘은 참조변수에 대해 이해를 해보도록 하겠습니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package sec01_exam;
 
public class Var_Pri_Ref {
 
    public static void main(String[] args) {
        
        
        Object obj = new Object();//참조변수
        System.out.println(obj);// java.lang.Object@50f8360d (주소값)
        System.out.println(obj.toString());
        // Object 클래스는 모든 클래스의 최고 조상 클래스
        // print ()메서드 안에 참조변수가 들어가면 주소값이 출력이 된다.
        // 즉, toString()가 자동 호출이 된다.
        
        
        
    }
 
}
 
cs

 

여기 Object obj = new Object();

를 만들었습니다.

기본형 변수 8가지를 제외한 나머지는 참조변수라고 말씀을 드렸죠.

 

 

2020/08/30 - [§개발자 되기 프로젝트§/java 이론] - [자바JAVA] 변수1 - 정의, data type, 종류

 

[자바JAVA] 변수1 - 정의, data type, 종류

안녕하세요 ~! 자바칩 프라푸치노입니다. 저는 지금 자바를 배우고 있는데 배운 것들을 기록하고자 블로그를 작성하게 되었습니다. 부족함이 보인다면 댓글로 많은 가르침 부탁드립니다 ㅎㅎ ��

sso-feeling.tistory.com

참조변수는 주소를 참조합니다.

또다시 그림으로 보여드리자면

이렇게 참조변수를 만들면 콜스택 영역에 공간이 만들어지고

new를 해야 heap영역에 객체가 만들어지면서 그 객체의 주소를 참조합니다.

 

위 코드처럼

System.out.println(obj); 이렇게 괄호 안에 참조변수가 들어가면 주소값이 출력이 됩니다.

System.out.println(obj.toString()); 이 값과 같은 값을 나타내는데요

참조변수를 넣으면 toString이 자동 호출되어 그렇습니다.

값을 볼까요?

같은 값이 나옵니다.

 

그럼

String 참조변수를 살펴봅시다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package sec01_exam;
 
public class Var_Pri_Ref {
 
    public static void main(String[] args) {
        
        
        //String str = 10; // 객체의 주소만 저장할 수 있어서 실제 값은 저장할 수 없다.        
        String str = null;
        // 참조형 변수_ null로 초기화가 가능하다.
        str = new String("자바");
        System.out.println(str);// 오버라이딩을 해놓았다. 주소를 출력하지 않고 글자를 출력하게끔 설계되어있다.
        System.out.println(str.toString());
        //String클래스는 print() 메서드 안에 들어가면 실제 값이 출력이 된다.
        
        str = null;
        System.out.println(str);        
        
    }
 
}
 
cs

 

String도 똑같이 메모리 구조가 생성됩니다.

String str = 10; 이 왜 안되는지 아시겠죠?

String은 참조변수이기 때문에 주소를 저장할 수 있어서 실제 값은 저장할 수 없습니다.

 

그런데 밑에 출력하는 곳을 보시면

Object였을때는 주소가 나왔는데 

String을 출력하면 실제로 들어간 값이 나옵니다. 

위에서 new String하고 안에 "자바"를 넣었죠.

String에서 toString은 실제값을 출력하게끔 오버라이딩이 되어있어서 그렇습니다.

오버라이딩은 나중에 객체지향 할때 다시 말씀드릴 것입니다.

 

오늘은 참조변수와 String 에 대해서 알아보았습니다.

감사합니다.

728x90