Java Data Type

Java Data Type

자바 데이터 타입은 크게 두 가지로 나누어진다. Primitive Type(기본 자료형)과 Non-Primitive Type/Reference Type(기본 자료형이 아닌 자료형 / 참조 자료형)으로 나뉜다. 기본 자료형 변수는 나타내고자 하는 기본 자료형의 값을 가지고 있는 반면, 참조 자료형 변수는 값이 그에 대한 참조 즉, 메모리 주소를 가지고 있다. 이런 차이는 객체의 메서드를 호출할 때 나타난다.

참조 유형대 기본 유형 비교표

참조 유형 기본 유형
String을 제외하고는 미리 정의되어 있지 않습니다. Java에 미리 정의되어 있다.
모든 참조 유형은 대문자로 시작한다. 모든 기본 유형은 소문자로 시작한다.
기본이 아닌 유형은 모두 동일한 크기를 갖는다. 기본 유형의 크기는 데이터 유형에 따라 다르다.
메서드를 호출하거나 호출하는데 사용한다. 기본 유형으로 메소드를 호출할 수 없다.
null일 수 있다. null일 수 없다. 항상 값이 있다.
Class, Array, String, Interface etc.. int, float, double, Boolean etc…
JVM은 기본적으로 각 참조 변수에 8바이트를 할당한다. 크기는 데이터 유형에 따라 다르다.

1. Primitive Data Types

기본 자료형

기본 자료형은 크게 Boolean(불린, 참 거짓), Character(문자 한 개), Integer Data Type(정수형), **Floating Point Data Types(부동소수점, 실수)**으로 구분 된다. 해당 관련 Class는 java.lang.Number에 있다.(char형 제외) 기본 타입의 크기는 작고 고정적이기 때문에 메모리의 Stack에 저장이 된다. 변수가 사용된 메서드가 종료되거나 사용된 객체가 사라질 때 자동으로 파괴된다. 자바에서 기본 자료형은 반드시 사용하기 전에 선언(Declared)되어야 한다. OS에 따라 자료형의 길이가 변하지 않는다. 비 객체 타입이다. 따라서 null값을 가질 수 없다.

1 - 1. Boolean Type Data

Boolean 타입

boolean 데이터 타입은 질문에 관한 값이 예/ 아니오 같은 단답식인 경우에만 사용한다. Boolan은 참, 거짓 유무를 판단하는 용도로 사용된다. 그래서 Boolean Type의 리터럴literal은 true, false만 존재한다. 기본적으로 초기화 하지 않은 경우 Boolean은 false가 기본이다. Boolean Type은 1 bit의 정보를 나타내지만, “크기(size)”는 정확하게 정의된 것은 아니다.' *

//ex
boolean isCat;
boolean b = true; // Initialized to true(true로 초기화)

// Use of different modifiers(다양한 수식어 사용)
class Bar {
public static volatile boolean b;
}
// public is access modifier(public은 엑세스 수정자)
// static and volatile are non-access modifiers
//(static 및 volatile은 엑세스 할 수 없는 수정자)**

1 - 2. Character Data Type

Charater 타입

Charater 데이터 타입은 ‘ ’로 묶여 사용하는 단일 문자를 저장하는데 사용된다. 자바 기본 제공으로 유니코드를 지원한다. 자바 char 데이터 형식은 ’\u0000’(또는 0) ~ ‘\uffff’(또는 65535 포함) 사이의 부호 없는 숫자를 저장하는데 사용되는 16bit 크기이며 유니코드 문자 집합은 이러한 숫자를 문자로 나타내는데 사용된다. 문자 인코딩을 사용해 실제 값이 숫자로 저장되고 유니코드가 문자 기호로 표현되는 숫자 데이터 유형으로 분류 될 수 있다. 자바 문자는 즉시 유니코드를 지원하지만, ASCII 코드는 여전히 0 에서 127 사이이다.

<aside> 💡 참조

16진수 유니코드 문자는 표기번 ‘\uXXXX’로 나타낼 수 있다.

8진법 코드 포인트로 ‘\ddd’로 나타낼 수 있다.

</aside>