
Java를 공부하다 보면 기본 자료형(Primitive Type) 과 객체 자료형(Reference Type) 이라는 개념이 꼭 등장합니다.
기본/객체 자료형이 무엇인지, 어떻게 다르고,언제 어떤 상황에서 사용하는 것이 좋은지 복습한 내용을 정리해보겠습니다.
null로 설정할 수 없습니다.== 연산자로 값 자체를 비교합니다.byte, short, int, long, float, double, char, boolean
int a = 10;
int b = 10;
System.out.println(a == b); // true
null로 설정할 수 있습니다.== 연산자는 주소(참조값)를 비교하며,.equals() 메서드는 값을 비교합니다.String, Integer, Double, Character, Boolean, 배열, 사용자 정의 클래스 등
String s1 = new String("hello");
String s2 = new String("hello");
System.out.println(s1 == s2); // false (주소 비교)
System.out.println(s1.equals(s2)); // true (값 비교)
Wrapper 클래스를 사용하여 .equals()로 비교할 수 있습니다.
Integer x = 10; // auto-boxing
Integer y = 10; // auto-boxing
System.out.println(x == y); // true (캐싱 범위 내에서는 동일 주소)
System.out.println(x.equals(y)); // true (값 비교)
| 구분 | 기본 자료형 | 객체 자료형 |
|---|---|---|
| 저장 위치 | Stack (값) | Heap (데이터) + Stack (주소) |
| null | 불가 | 가능 |
| 메서드/필드 | 없음 | 사용 가능 |
| 비교 방식 | == 값 비교 | == 주소 비교, .equals() 값 비교 |
공부하다 보면 가장 헷갈리는 부분이 “어떤 상황에서 객체 자료형을 써야 하는가?” 입니다.
String.length(), String.replace(), Integer.compareTo()null 상태로 값을 표현해야 할 때Integer age = null;List<Integer> list = new ArrayList<>();User, Product, Order 등for (int i = 0; i < 100; i++) {
// 단순 카운트, 빠른 계산
}