JAVA/java 이론

[자바JAVA] 변수1 - 정의, data type, 종류

자바칩 프라푸치노 2020. 8. 30. 19:19

안녕하세요 ~! 자바칩 프라푸치노입니다.

저는 지금 자바를 배우고 있는데 배운 것들을 기록하고자 블로그를 작성하게 되었습니다.

부족함이 보인다면 댓글로 많은 가르침 부탁드립니다 ㅎㅎ

 

 

 

자바 Java 이론 첫 번째 시간 - 변수(Variable)

자바에서 변수에 대해서 알아보겠습니다. 

변수는 기본적으로 알아야할 개념인데요

지금부터 차근차근 알아봅시다!

 

1. 변수란? 

변수는 하나의 값을 저장할 수 있는 기억공간입니다.

int i = 0;

이런식으로 쓰는데요

여기서 int는 변수의 데이터 타입이고, i는 변수의 이름.

0은 int타입 변수에 저장된 값입니다.

 

변수는 한번에는 하나의 값을 저장할 수 있지만 ,  

값들을 바꿔서 0을 저장했다가 10을 저장했다가 5를 저장할 수 있습니다.그러면 그 변수의 값은 마지막에 저장한 값이, 변수가 가진 값이라고 할 수 있습니다.

 

 

 

2. 변수의 타입 (Data Type)

아까 int는 변수의 데이터 타입이라고 말씀드렸는데요,변수의 타입에는 여러가지가 있습니다.

 

변수의 타입에는 기본형 변수와 참조형 변수가 있습니다.

 (1) 기본형 변수(Primitive type)

  - 실제 값을 저장하는 타입입니다.

   * 논리형 변수타입 - boolean 

  *문자형 변수타입 - char 

   * 정수형 변수타입 - byte, short, int, long 

   * 실수형 변수타입 - float, double

 

 

이렇게 8종류가 있습니다.

데이터 타입의 크기는 이렇게 나눠지는데요, 크기에 대해서는 뒤에서 설명하도록 하겠습니다. 

 

종류/ 크기 1byte 2byte 4byte 8byte
논리형 boolean      
문자형        
정수형 byte short int long
실수형     float double

기본적으로 정수를 나타낼때는나타낼 때는 int를 쓰고, 실수형을 나타낼 때는 double을 사용합니다.

 

논리형 – truefalse중 하나를 값으로 갖으며, 조건식과 논리적 계산에 사용됩니다.

문자형 문자를 저장하는 데 사용되며, 변수 당 하나의 문자만을 저장할 수 있다. ( 'a'이렇게 한 문자만 저장 가능합니다)

정수형 정수 값을 저장하는 데 사용됩니다.

실수형 실수 값을 저장하는데 사용됩니다.

 

 (2) 참조형 변수(Reference type)

- 기본형 8가지를 제외한 나머지 

- 객체의 주소 값을 저장합니다 

- 대표적으로 String클래스가 있습니다.

- 크기는 4byte입니다.

 

3. 변수의 선언, 초기화

 

변수는 먼저 선언을 해주고 사용을 해야 하는데요,

int i; 

이렇게 int타입의 변수 i를 생성해주겠다고 적는 것이 변수의 선언입니다.

int i = 0;

이렇게 선언하면서 값까지 저장하는 것을 뭐라고 할까요?

선언과 동시에 변수를 초기화한다고 말합니다.

위에서 int i를 선언했으면 그 후에 i변수를 쓸 때는 선언 없이 초기화만 해줍니다.

그것은 뒤에서 알아보도록 하겠습니다. 

 

그렇다면 참조형 변수는 어떻게 선언할까요?

기본적으로 문자열을 저장하는 String참조 변수를 예를 들겠습니다.

String str = new String("abc");

이런 형태로 선언과 초기화를 해줍니다.

여기서 str이 String 타입 변수의 이름이고 "abc"가 안에 들어있는 값입니다.

참조 변수는 이렇게 new를 써줘야 하는데요 밑에서 자세하게 알아보겠습니다.

 

 

4. 기본형 변수와 참조형 변수

 

기본형 변수와 참조형 변수의 메모리 상에서 어떻게 실행되는지 이해를 해보겠습니다.

메모리에는  이렇게 영역이 나눠져 있는데요,

Static 영역 (클래스영역, 메서드 영역)
콜스택 영역 (Call Stack)
Heap 영역 (사용자 정의 메모리영역)

기본형 변수를 선언하면 ( int i = 0;이라고 선언하겠습니다.)

콜 스택 영역에 int타입의 i라는 이름을 가진 4byte짜리 공간이 만들어져서 안에는 0이라는 값을 가지게 됩니다.

 

Static 영역 (클래스영역, 메서드 영역)
콜스택 영역 (Call Stack)

int    
(0)    
4byte
Heap 영역 (사용자 정의 메모리영역)

 

참조형 변수도 마찬가지로 ( String str이라고 하겠습니다.)

콜 스택 영역에 String 타입의 str이라는 이름을 가진 4byte짜리 공간이 만들어집니다.

 

Static 영역 (클래스영역, 메서드 영역)
콜스택 영역 (Call Stack)

int                   String                          
(0)                   (   )     
4byte              4byte     
Heap 영역 (사용자 정의 메모리영역)

 

참조형 변수는 주소 값을 가진다고 했습니다.

따라서 콜 스택 영역에 생성된 변수 str은 주소값을 가지고 있는 것입니다.

그런데 new 메서드를 사용해주지 않는다면 누구의 주소를 가지는지 모릅니다.

 

 String str = new String("abc");

 

이렇게 선언을 해주면 Heap영역에 str방이 생겨서 그 안에 "abc"라는 실제 값을 저장하고

콜스택 영역에 있는 str은 그 주소를 참조하게 됩니다.

참조를 받고 있던 "abc"값을 가진 객체의 참조가 끊기면 그것은 쓰레기 값 (dummy data)라고 해서, 나중에 gc(garbage collector)가 처리해줍니다.그것은 나중에 차차 알아보도록 합시다.

 

 

 

 

여기까지가 저의 변수 이론 첫 포스팅이었구요!다음 포스팅에서는 

변수의 크기, 명명규칙, 형변환 등에 대해서 알아보도록 하겠습니다.

읽어주셔서 감사합니다.

728x90