Java/Spring

Java 데이터 타입(기본 타입, 참조 타입)

B.OCK 2024. 2. 14. 13:38
반응형

자바 데이터 타입

Java 의 데이터 타입은 크게 두가지로 기본 타입참조 타입으로 분류된다.

 

  • 기본 타입(Primitive Type) : byte, int, short, char, long, float, double, boolean
  • 참조 타입(Reference Type) : 배열 타입, 문자열, 열거 타입, 클래스, 인터페이스

 

기본 타입(Primitive Type)

기본 타입으로 선언된 변수들은 실제 값이 변수에 저장된다.

기본 타입의 종류로는 byte, int, short, char, long, float, double, boolean 등이 있다.

int obo = 20;
char obo2 = "a";

 

 

참조 타입(Reference Type)

참조 타입으로 선언된 변수들은 메모리의 주소를 값으로 갖는다.

String obo = "문자열 참조 타입 입니다.";

 

메모리의 주소를 통해 변수를 참조하므로 참조 타입으로 불린다.

 

참조 타입의 종류로는 배열, 열거, 문자열, 클래스, 인터페이스 등이 있다.

참조 타입의 값은 주소라는걸 확인하기 위해선 아래의 예시가 있다.

// Obo 객체
public class Obo {
	String name;
    Integer age;
    
    public Obo(String name, Integer age){
    	this.name = name;
        this.age = age;
    }
    
    ...getter
    ...setter
}

// 객체 비교
Obo obo1 = new Obo("obo1", 29);
Obo obo2 = new Obo("obo1", 29);
System.out.println(obo1 == obo2); // false

 

위 Obo 객체를 new 키워드로 생성하여 비교하였다. 객체와 배열은 생성 시 메모리 영역 중 힙 메모리에 생성된다.

두 객체의 값이 같고 같은 객체를 생성했더라도 힙 메모리 영역에 주소가 다르므로 false 값이 나온다.

즉, 참조할 메모리 주소가 다르기 때문에 값이 다르다.

 

String 문자열은 문자열 리터럴이 동일하면 String 객체를 공유하도록 되어 있어서 아래와 같은 경우는 같다.

String obo1 = "obo";
String obo2 = "obo";
System.out.println(obo1 == obo2); // true

 

하지만 new 키워드를 사용해 String 형 객체를 생성했을 경우 힙 메모리 영역에 주소가 다른 객체로 생성된다.

String obo1 = new String("obo");
String obo2 = new String("obo");
System.out.println(obo1 == obo2); // false

 

반응형