Java

[Java]변수의 자료형 (part.1 정수형)

MoZZANG 2022. 2. 23. 19:54

변수의 자료형(Data Type)에는 크게 Primitive Type(기본 자료형)과 Reference Type(참조형)이 있다.

 

이번 포스팅에서는 Primitive Type(기본 자료형)에 대해서 알아보자.

 

<기본 자료형(Primitive Type)>

 

기본자료형에는 크게 수치형, 문자형, 논리형이 있고 자세한 내용은 아래와 같다.

▲ 위 자료를 보다시피 각각에는 종류와 크기들이 있다. 

 

    컴퓨터는 2진법 즉, 0과 1로써 모든 자료를 저장하고 읽기 때문에 1byte의 경우에는 이진법으로 변환 시 127이 되는      숫자만이 들어올 수 있는 것이다.

 

    bit는 '최소 저장 단위' 이다. bit가 8개 모인 8bit = 1byte가 된다. 바이트가 모여서 1024byte가 되면 1KB가 되며

    1024KB = 1MB / 1024MB = 1GB / 1024GB =1TB / 1024TB = 1PB 가 된다.

 

 

 

수치형에는 정수형실수형이 있으며 정수형부터 차례대로 알아보자.

 

 

 

<정수형>

 

정수형에는 byte, short, int, long 이렇게 네 가지의 자료형 종류가 있으며 각각의 크기는 점점 커진다.

 

정수형과 실수형을 관통하는 중요한 개념이 있는데, 다음과 같다.

 

원칙)★

1. 큰 자료형과 작은 자료형의 연산 결과는 큰 자료형을 따른다.
   즉, 큰 자료형에 담긴 값과 작은 자료형에 담긴 값을 연산하게되면
   그릇이 더 큰(용량이 더 큰) 큰 자료형에 담긴다는 것.

2. 같은 자료형끼리의 연산 결과는 같은 자료형이 된다.
   예외**)int형보다 작은 자료형(byte,short,char)들끼리 연산 결과는 int형이다. 즉 원칙1번이 적용이 안된다.
        ex) byte형 + byte형 = int형
            short형 + short형 = int형
            byte형 + short형 = int형

 

▲ 원칙 2번의 예외에 의문이 들 것이다. why? 바로 기본 자료형 중 수치형의 대표 자료형은 int이기 때문이다.

    쉽게 생각해서 기본형이 int이기 때문에 기본이 되는 int보다 작은 것들은 그냥 무시하고 int형으로 보겠다는 것

 

 

예제를 보면서 이해해보자.

▲ byte의 크기는 2진법으로 했을 시 최대 127의 숫자가 넣을 수 있기 때문에 127는 byte안에 충분히 넣을 수 있다.

 

 

 

하지만 원칙 2번에 의해 아래와 같은 경우에는 연산자체가 안되는 것이다.

▲ 위의 예시같은 경우는 너무너무 중요한 원칙2. 에 의해 출력시 error가 난다.

 

 

 

그렇다면 해결책은 뭘까? 바로 그릇의 크기인 자료형을 직접 지정하거나 바꾸어 주는 것이다.

 

해결책 예시를 보자

▲ 위와 같은 두 가지 방법을 통해 해결책을 제시 할 수 있다.

    short의 경우도 똑같은 메커니즘에 의해 동작하고 해결할 수 있다.

 

 

 

 

그렇다면 기본형은 int와 그보다 큰 long형의 경우는 어떨까? 바로 다음과 같은 규칙에 따른다.

 

정수형에서 int형보다 작은 자료형들을 제외한 자료형들끼리(int,long)의 연산결과는 모두 원칙을 따른다.
즉, int형과 int형의 연산결과는 int형
     long형과 long형의 연산결과는 long형
     int형과 long형의 연산결과는 long형
 

▲ 글 초반부에 존재하는 원칙)★ 을 따르는 것인데, 큰 자료형과 작은 자료형의 연산 원칙을 따르는 것이다.

    아래의 예제를 보면서 이해해보자.

 

 

▲ 결국 관통하는 개념은 원칙이다.

 

 

 

결국 정수형을 이해하기 위해서는 원칙과 예외인 것이다. 원칙을 잘 이해하고 숙지하고 있으면 어떠한 장애물을 만나도 이해할 수 있을 것이다.

'Java' 카테고리의 다른 글

[Java]형변환(TypeCasting)  (0) 2022.02.24
[Java]상수(Constant)  (0) 2022.02.24
[Java]변수의 자료형 (part.2 실수형)  (0) 2022.02.23
[Java]변수(Variable)의 개념  (0) 2022.02.23
[Java]프로그램 구조  (0) 2022.02.22