본문 바로가기
Java/기초

참조 타입

by notcherry 2023. 7. 3.

-기본 타입 : 

      정수, 실수, 문자, 논리 리터럴을 직접 변수에 값으로 저장

 

-참조 타입:

       객체의 번지를 참조하는 타입. 객체는 힙 영역에 저장됨. 배열, 열거, 클래스, 인터페이스

 

 

메모리 사용 영역

출처 : 혼자 공부하는 자바

 

JVM 스택 영역

메소드를 호출할 때마다 프레임이 추가되고 메소드가 종료되면 해당 프레임을 제거한다.

참조 타입 변수는 스택 영역에 힙 역역에 생성된 객체의 주소를 가진다.

출처 : 혼자 공부하는 자바

 

참조 변수의 비교연산자 연산

참조 변수 간의 ==, != 연산은 동일 객체를 참조하는지, 혹은 다른 객체를 참조하는지 알아볼 때 사용한다.

변수 간의 메모리 주소 번지 값을 비교한다. 

    public static void main(String[] args){

        //메모리 공유
        String strVar1 = "Cl";
        String strVar2 = "Cl";

        if(strVar1 == strVar2){
            System.out.println("they are same");
        } else{
            System.out.println("they are different");
        }

        //같은 값을 갖는 다른 객체로 생성(힙 영역에 저장된 주소값이 다름)
        String strVar3 = new String("cl");
        String strVar4 = new String("cl");

        //메모리 주소값 비교
        if(strVar3 == strVar4){
            System.out.println("they are same");
        } else{
            System.out.println("they are different");
        }
        //실제로 갖는 값 비교->equals 메서드 이용
        if (strVar3.equals(strVar4)){
            System.out.println("they are same");
        }
    }

 

결과

 

*NullPointerException : 참조변수는 null로 지정이 가능하기 때문에 이때 발생하는 에러 

 

 

'Java > 기초' 카테고리의 다른 글

접근 제한자  (0) 2023.07.06
배열 선언과 지정 그리고 length  (0) 2023.07.04
자바 연산자  (0) 2023.07.03
변수 값 출력하기  (0) 2023.07.03
JAVA 기초와 개발 환경 설정  (0) 2023.07.03