지식

[JAVA] 변수의 기본형과 참조형 타입 정리

colin2 2024. 8. 27. 17:15

 

[JAVA] 변수의 기본형과 참조형 타입

 

자바의 기초를 계속 보다 보니 당연하게 쓰고 있던 int와 String의 차이를 새삼 깨닫게 되었다.

 

분명 나도 자바를 처음 배울 때 배웠을 테지만, 그때는 기초까지 모두 머리에 담기에는 역부족이었다.

 

그 이후로는 계속 사용하다보니 당연하게 사용하는 타입이었는데,

 

 

int는 소문자로 시작하고 String은 대문자로 시작하는 이유는?

 

이라는 이 질문에 머리를 띵~ 딱콩 맞는 느낌이었고, 이제는 그 차이를 알고 쓸 때가 되었다고 생각했다.

 

 


 


변수의 기본형과 참조형 타입

우선 변수(variable)란 무엇일까?

데이터를 저장하기 위해 할당받은 저장 공간이다.

 

쉽게 익숙해지려면 '변하는 값'이라고 생각하자.

 

자, 그럼 이제 소문자로 시작하는 것과 대문자로 시작하는 것의 차이가 무엇인지 알아보자.

 

결론부터 말하자면 기본형 변수의 타입은 소문자를 쓰고, 참조형 변수의 타입은 대문자를 쓴다.

 

여기에서 기본형 변수 타입은 실제 값을 저장하는 변수이고, 참조형 변수는 주소 값을 저장하는 변수이다.

 


기본형 변수(Primitive Variable)의 타입

 

기본형 타입은 실제 값을 저장한다고 했는데, 자바의 기초를 배워본 사람이라면 누구나 한 번은 보았을

논리형(boolean),

문자형(char),

정수형(byte, short, int long),

실수형(float, double)

이들이 바로 이 기본형 타입이다.

 

자세한 크키는 생략하고, 기본형 타입의 특징을 정리해 보면,

 

1. 소문자로 시작

2. 저장 공간에 실제 값을 가짐

3. 기본값이 들어가기 때문에 null을 가질 수 없음

4. 초기화하지 않으면 타입에 따라 다른 기본값을 가짐

5. 일반적으로 스택 메모리에 저장

6. 값을 변경하려면 새로운 값을 할당해야 함

 


참조형 변수(Reference Variable)의 타입

 

참조형 타입은 객체를 참조하는 타입으로, 변수에 객체의 주소를 저장하고 객체는 힙 메모리에 저장하게 된다.

 

기본형이 아니라면 참조형 타입이라고 생각하면 되겠다.

 

클래스(String, ArrayList, HashMap 등),

인터페이스(클래스가 구현해야 하는 계약 정의),

배열타입(int[], String[]),

열거타입(제한된 상수 집합 정의)

 

참조형 타입의 특징을 정리해 보면,

 

  1. 변수는 기본형과 달리 '값'이 아닌 객체의 '주소'를 저장
  2. 객체는 힙 메모리에 저장되며, 힙 메모리는 동적으로 할당 됨
  3. 초기화하지 않으면 'null'을 기본값을 가짐
  4. 객체의 상태가 immutable이 아니라면 변경 가능. 즉, 객체의 내부 데이터 수정 가능

 


변수의 기본형과 참조형 타입 비교

  • 메모리 관리
    • 기본형: 스택 메모리에 직접 저장되어 메모리 할당과 해제가 자동으로 관리됩니다.
    • 참조형: 스택 메모리에는 참조 주소만 저장되고, 실제 데이터는 힙 메모리에 저장됩니다. 객체가 더 이상 참조되지 않으면 가비지 컬렉터에 의해 메모리가 회수됩니다.
  • 속도
    • 기본형: 데이터 접근과 연산이 빠릅니다.
    • 참조형: 참조를 통해 객체에 접근해야 하므로 기본형보다 상대적으로 느릴 수 있습니다.
  • 기본값
    • 기본형: 각 타입에 맞는 기본값이 정해져 있습니다.
    • 참조형: 기본값은 null입니다.
  • 용도
    • 기본형: 간단한 데이터 저장 및 연산에 적합합니다.
    • 참조형: 복잡한 데이터 구조와 객체 지향 프로그래밍에 적합합니다.

 


궁금증 해결.

지식 +1.