Java/이론

[Java] 자바 자료형의 이해: 기본형과 참조형, 그리고 메모리 구조 탐구

Puft 2024. 11. 20. 17:49

안녕하세요!

 

어제부터 백엔드 쪽 역량을 키우기 위해서 직업 훈련을 받고있습니다

 

오늘부터 공부하며 배운 내용들을 기록해나가려 합니다.

 

직업 훈련에서는 가장 처음 자바를 배우는데요.

 

Eclipse를 사용해서 공부하고 있습니다.

 

오늘 배운 내용은 자료형의 선언과 초기화 그리고 JDK의 Scanner라는 도구입니다.

 

 

자료형에는 기본형참조형이 있습니다.

 

기본형은 정수와 실수, 문자를 비롯한 데이터를 포함하고,

 

참조형은 기본형 외에 문자열 등이 포함된다고 보시면 됩니다.

 

각 자료형의 표현할 수 있는 용량입니다.

 

byte : -128 ~ 127 / short : 약 -3만 ~ 3만

 

★int : 약 -21억 ~ 21억 / long : int를 벗어나는 범위

 

이 중에서는 표현할 수 있는 범위가 가장 넓은

 

int를 가장 많이 사용합니다.

 

 

 

 

8byte의 자료형은 이진수로 표현됩니다.

 

이 자료형은 부호비트와 숫자를 나타내는 이진수로 구성됩니다.

 

 

  • 부호비트 = 0 : 양수
  • 부호비트 = 1 : 음수
 

 

 

부호비트는 가장 앞에 위치하며 0은 양수, 1은 음수를 나타냅니다.

 

이진 자료형은 오른쪽 부터

 

2^0 = 1, 2^1 = 2, 2^2 = 4, 2^3 = 8, 2^4 = 16, 2^5 = 32, 2^6 = 64

 

마지막은 부호비트로 구성됩니다.

 

예를들면 

 

0 / 1 / 0 / 1 / 0 / 1 / 1 / 0

 

다음과 같은 데이터가 있을 때 

 

양수 (2^1 + 2^2 + 2^4 + 2^6)  = 2 + 4 + 16 + 16 + 64 = 86

 

1에 해당하는 제곱근을 더해서 해당하는 숫자를 구할 수 있습니다.

 

 

실수 자료형 float / double이 있는데

 

다른 언어 : float (4byte) / ★ 자바 한정 : double (8byte)

 

다른 언어에서는 float를 주로 사용하지만 자바 한정으로 double을 사용합니다.

 

문자를 나타내는 자료형은 char로 문자열이 아닌 낱개의 문자를 나타낼 때 사용합니다.

 

boolean 자료형은 참/거짓 (true/false)을 나타낼 수 있습니다.

 

지금까지는 기본형 자료형이었고

 

String 자료형은 참조형으로 문자열을 나타냅니다.

 

 

다음은 메모리의 영역에 대해서 배웠습니다.

 

메모리는 크게 3가지로 구성되어 있는데

 

아직 배우지 않은 한가지와(추후에 다룸)

 

Stack, Heap으로 구성됩니다.

 

Stack은 휘발성 자료형으로 프로그램이 종료되면 적재되어있는 데이터가

 

자동으로 정리됩니다.

 

반면에 Heap은 비휘발성 메모리로 프로그램이 종료되어도 여전히 존재하는 메모리입니다. 

 

예전에는 이 Heap을 수동으로 정리해야 했지만

 

JAVA에는 Garbage Collection이라는 JDK가 존재하기 떄문에

 

Heap의 데이터를 정리해줍니다.

 

Heap에서 Stack으로 문자열을 호출시 기본형은 그대로 쌓이고

 

참조형 자료들은 번지값(주소값)을 저장합니다.

 

때문에 문자열은 그대로 저장되는게 아니라

 

문자열의 주소값이 Stack에 저장된다고 볼 수 있습니다.

 

 

 

다음은 이어서 Scanner와 bat에 대해서 다뤄보겠습니다.

 

읽어주셔서 감사합니다!