자바 - 자바 변수의 자료형(Data Type)

2024. 3. 13. 11:41백엔드/자바

자바 - 자바 변수의 자료형(Data Type)

 

 

자바 문법의 시작은 가볍게 자바 변수의 자료형을 알아볼까한다. 물론 마음은 가볍게 시작하지만 절대 내용이 가벼운 것은 아니다. 자바 문법을 처음 시작할 땐 아 이런게 있구나하는 정도로만 넘어가면 되는 부분이지만 어플리케이션을 만들어보고 다시 공부하려니 '아 이게 이래서 이런거였구나' 하는 내용들이 많았다. 자료형 공부 역시 코딩에 호기심 많은 도깨비인 까비와 함께 한다.

 

기본 자료형(Primitive Data Type)

분류 타입 크기 기본값 범위
정수형 byte 1byte 0 -128 ~ 127
정수형 short 2byte 0 -32768 ~ 32767
정수형 int 4byte 0 -2147483648 ~ 2147483647
정수형 long 8byte 0L - 9223372036854775808 ~ 9223372036854775807
문자형 char 4byte ‘\u0000’ 0 ~ 65535 (\u0000 ~ \uffff)
실수형 float 4byte 0.0f single-precision 64-bit IEEE 754 floating point
실수형 double 8byte 0.0d double-precision 64-bit IEEE 754 floating point
논리형 boolean 1byte false true, false

 

참조 자료형(Reference Data type)

 

실제 값을 갖는 것이 아닌 데이터가 저장된 메모리의 " 주소 값"을 가지는...

 

까비: 잠깐 방금 뭔가 설명도 없이 휘리릭하고 지나간 것 같은데...?

 

꼬비: 치 들켜버렸군... 자료형 부분은 어물쩡 넘어가려했는데 말이지...

 

까비: 그건 안돼! 뭐든 자세히 알려줘!

 

꼬비: 정말 귀찮은 녀석이군...

 


변수의 자료형(Data Type)

변수(variable)란 데이터(data)를 저장하기 위해 프로그램에 의해 이름을 할당받은 메모리 공간을 의미한다. 그리고 자바에서 말하는 자료형(Data Type)이란, 변수에 적재할 데이터가 메모리에 어떻게 저장되고 프로그램에서 어떻게 처리되어야 하는지를 명시적으로 알려주는 키워드이다.

 

이 자료형(Data Type)은 크게 기본형 타입과 참조형 타입으로 구분된다.

  • 기본형(primitive type): 계산을  위해 실제 값을 저장한다.
  • 참조형(reference type): 객체의 주소를 저장한다. null 또는 객체의 주소(4byte, 0x0 ~ 0xffffffff)를 갖는다.

기본형 타입(Primitive Type)

기본형 타입에는 크게 논리형 (boolean), 문자형(char), 정수형(byte, short, int, long), 실수형(float, double) 으로 나뉜다.

 

출처:https://2.bp.blogspot.com/-s25hmuq7sjs/XGiuh3OJ0cI/AAAAAAAABTE/oagl7LbWrA4CbjxPhpReNZs28gKKQpL1wCLcBGAs/s1600/Primitive%2BData%2BTypes%2BGraphic.png

 

기본형 타입에 대한 특징으로는 다음과 같다.

  • 모두 소문자로 시작한다.
  • 비객체 타입으로 null 값을 가질 수 없다. (기본값이 정해져 있음)
  • 변수의 선언과 동시에 메모리를 생성한다.
  • 모든 값 타입은 메모리의 스택(stack)에 저장됨
  • 저장공간에 실제 자료 값은 가진다.

까비: 아하! 그러니까 기본형은 저장 공간에 실제 자료 값을 가지는 자료형을 말하는구나! 그런데 저기서 말하는 stack은 예전에 배웠던 JVM 할아버지의 메모리에 있는 그 stack이랑 같은거야?

 

꼬비: 맞아! 여기서 말하는 stack이 바로 그 JVM 할아버지가 관리하는 메모리라고 할 수 있지... 

 

꼬비: 여기서 잠깐 상식 퀴즈! 1byte는 몇 bit일까? 

 

까비: 에이 문제가 너무 쉬운거 아니야?

 

까비: ......

 

꼬비: ......?

 

꼬비: 1byte는 8bit를 말하는 거야.

 

까비: 알고 있었어.

 

꼬비: 아래 표를 보면 기본 자료형의 종류와 타입, 크기, 기본값, 범위를 표로 정리해놨어. 물론 모두 다 알고 있어야 하지만 코딩을 하다보면 자연스레 알게 될거야. 그러니 지금은 가장 많이 쓰이는 int, long, double만 알고 있어도 충분해. 사실 실수형은 float가 많이 쓰였지만, 저장 기술이 발달하면서 요즘엔 float보단 double이 많이 쓰이는 추세야.

 

꼬비: 그렇구나. 고마워 꼬비야!

 

 

기본형 타입의 종류

분류 타입 크기 기본값 범위
정수형 byte 1byte 0 -128 ~ 127
정수형 short 2byte 0 -32768 ~ 32767
정수형 int 4byte 0 -2147483648 ~ 2147483647
정수형 long 8byte 0L - 9223372036854775808 ~ 9223372036854775807
문자형 char 4byte ‘\u0000’ 0 ~ 65535 (\u0000 ~ \uffff)
실수형 float 4byte 0.0f single-precision 64-bit IEEE 754 floating point
실수형 double 8byte 0.0d double-precision 64-bit IEEE 754 floating point
논리형 boolean 1byte false true, false

 


참조 자료형(Reference Data Type)

자바에서 기본형(Primitive Type)을 제외한 타입들이 모두 참조형(Reference type)이다. 참조형은 자바에서 최상인 java.lang.Object 클래스를 상속하는 모든 클래스들을 말한다. 참조 자료형에는 클래스(Class), 인터페이스(Interface), 배열(Array), 열거형(Enum)이 있다. 또한, 자바에서 제공하는 많은 클래스들이 참조 자료형으로 사용된다.

 

참조 자료형 설명
String 문자열을 저장하는 데 사용되는 클래스.
ArrayList 동적 배열을 나타내는 클래스.
HashMap 키-값 쌍을 저장하는 데 사용되는 클래스.
HashSet 고유한 요소를 저장하는 데 사용되는 클래스.
LinkedList 연결 리스트를 나타내는 클래스.
Queue 큐를 나타내는 인터페이스.
Stack 스택을 나타내는 클래스.

 

참조형의 특징은 다음과 같다.

  • 기본형과 달리 실제 값이 저장되지 않고, 자료가 저장된 공간의 주소를 저장한다.
  • 실제 값은 다른 곳에 있으며 값이 있는 주소를 가지고 있어 나중에 그 주소를 참조해서 값을 가져온다.
  • 메모리의 힙(heap)에 실제 값을 저장하고, 그 참조값(주소값)을 갖는 변수는 스택에 저장한다.
  • 참조형 변수는 null로 초기화할 수 있다.
  • 할당되는 메모리 크기는 모두 4byte이다. (객체의 주소값을 저장하니까)

꼬비: 여기까지가 기본 자료형과 참조 자료형에 대한 내용이었고, 이제 이 둘의 공통점과 차이점을 비교해볼거야.

 

까비: 좋아!

 

 

기본자료형과 참조자료형 비교 

공통점 기본 자료형 참조 자료형
데이터 저장 데이터를 저장하는 데 사용됨 데이터를 저장하는 데 사용됨
변수 선언 사용될 수 있음 사용될 수 있음
연산자 사용 연산 가능 연산 가능

 

차이점 기본 자료형 참조 자료형
종류 숫자, 문자, 논리값 등 클래스, 인터페이스, 배열, 열거 타입 등
메모리 할당 방식 스택 메모리에 값 직접 저장 객체의 주소를 스택에 저장, 데이터는 힙에 저장
데이터 크기 고정된 크기 일반적으로 고정된 크기가 아님
초기화 선언과 동시에 기본값으로 초기화 null로 초기화
메모리 관리 가비지 컬렉션의 대상이 아님 가비지 컬렉션의 대상이 될 수 있음
숫자간의 산술연산 가능 여부 산술연산 가능  산술연산 불가능
제너럭 타입 내 사용 가능 여부 사용 불가능 사용 가능

 

 

까비: 제너럭 타입이 뭐야?

 

꼬비: 흐흐 그걸 궁금해할 줄 알았지... 하지만 여기선 자세히 알 필요없이 그냥 그런게 있다 정도만 알아도 돼. 대신 나중에 제너럭을 사용하기 위해 우리가 여기서 알아둬야 할 게 있지...

 


래퍼 클래스(Wrapper Class)

 

꼬비: 자 이제 래퍼클래스에 대해서 알아보겠어... 흐흐

 

까비: 잠깐 꼬비야!

 

꼬비: 응?

 

까비: 왠지 그 얘기는 길어질 것 같으니 내일 하도록 하자.

 

꼬비: 끄응... 이제 막 속도가 붙던 참이었는데... 아쉽게 됐군... 


More Quality Blog

 

https://adjh54.tistory.com/119

 

[Java] 자료형(Data Type) 이해하기 : 기본 / 참조 자료형, 래퍼 클래스

해당 글에서는 자료형 중 기본 자료형, 참조 자료형, 래퍼 클래스에 대해 이해하고 각각을 비교하여 이해를 돕기 위한 목적으로 작성을 하였습니다. 1) 기본 자료형(Primitive Data Type) 💡 데이터를

adjh54.tistory.com

 

https://inpa.tistory.com

 

☕ JAVA 변수의 기본형 & 참조형 타입 차이 이해하기

변수의 기본형 & 참조형 타입 변수(variable)란 데이터(data)를 저장하기 위해 프로그램에 의해 이름을 할당받은 메모리 공간을 의미한다. 그리고 자바에서 말하는 데이터 타입(자료형)이란, 변수에

inpa.tistory.com