이것저것
자바 데이터 타입, 변수 그리고 배열 본문
Java Primitve type 종류와 값의 범위 그리고 기본 값
Primitve type은 자바의 기본 타입들이며, 총 8가지가 존재한다.
자바에서는 필드 선언시 초기화를 하지 않으면, 디폴트 값으로 초기화가 된다. Primitive type은 유의미한 값을 가지며, Reference type 은 null로 초기화가 됩니다.
- boolean : true/false를 나타내는 타입이며, JVM 의 구현은 1byte을 사용한다. 디폴트 값은 false
- char : unicode 문자를 나타내는 정수형 타입이다. unsigned 2byte기 때문에 표현할 수 있는 값의 범위는 '\u0000'(0)에서 '\uffff'(65535) 이다. 기본 값은 '\u0000'이다.
- byte : 이름과 같이 1byte을 차지하는 정수형 타입이다. (-128 ~ 127 의 범위를 가진다.) 기본값은 0이다.
- short : 2byte를 차지하는 정수형 타입이다. (32,768 ~ 32,767 의 범위를 가진다.) 기본값은 0 이다.
- int : 4byte를 차지하는 정수형 타입이다. (231 ~ 231-1 의 범위를 가진다.) 기본값으 0이다. 리터럴로 정수형 값을 할당할 때, 기본적으로 사용되는 타입이다.
- long : 8byte를 차지하는 정수형 타입이다. (-263 ~ 263-1 의 범위를 가진다.) 기본값은 0이다. 리터럴로 할당할 경우, 뒤에 L이나 l을 붙히면 long 타입으로 생성 가능하다. (대문자를 사용하는게 일반적이다.) 기본값은 0이다.
- float : 4byte를 차지하는 부동소수점 타입이다. 표현 가능한 값을 범위는 굉장히 넓으나, 정확히 표현하지 못하는 한계가 있기 때문에 보통은 유효 숫자 범위를 더 중요하게 생각한다. (6~7 자리의 정밀도를 가진다.) 리터럴에 F나 f를 붙혀 표현하며 기본값은 0.0f 이다.
- double : 8byte를 차지하는 부동소수점 타입이다. float보다 높은 정밀도를 가진다. (15자리의 정밀도) 기본적으로 리터럴로 선언시 double 형을 사용하나 D 혹은 d를 붙혀 표현 가능하다. 기본값은 0.0d이다.
Primitive Type 과 Reference Type
자바에는 Primitive type 과 Reference Type 이 존재한다고 하는데, 이 두 타입의 차이점은 무엇일까?
간단하게 Reference Type은 Primitve Type을 제외한 모든 타입들이다. 이 Reference Type은 변수 선언시 변수에 값이 저장되는게 아니라, 객체에 대한 Heap 영역의 참조를 저장하게 된다. Java는 참조 포인터가 아니기 때문에, 개발자는 직접적으로 메모리에 접근해서 조작할 수 없다.
"참조를 저장한다" 는 것은 같은 참조를 가리키고 있다면, 한쪽에서 객체의 상태를 변경하는 경우 다른 쪽에서 영향을 받을 수 있다는 뜻이다.
Reference Type 에서는 null을 사용할 수 있다. (null자체가 null을 참조한다는 의미를 지니고있기 때문이다.)
리터럴
리터럴은 고정된 값을 나타내는 소스코드상에서의 표현이며, 별도의 연산이 필요없이 표현된다.
정수 리터럴
정수 리터럴은 정수형 숫자 혹은 정수형 숫자에 L/l 이 추가된 형태로 표현된다. byte, short, int, long 타입은 int 리터럴로 생성 가능하며, int 범위를 벗어나면 자동으로 long 리터럴로 생성된다.
부동 소수점 리터럴
부동 소수점 리터럴의 경우 세 가지가 있다. F 나 f 로 끝나는 형태로 표현될 경우, float 형 리터럴이다. D 또는 d로 끝나는 경우엔 double 형 티러털이다.
부동 소수점은 E 또는 e를 사용해서 지수 표현식으로도 작성할 수 있다. (123.4 = 1.234e2)
변수 선언 및 초기화하는 방법
- 인스턴스 변수 : 클래스 선언시 static 키워드 없이 선언된 필드이다. 이 필드는 인스턴스 별로 다른 값을 가질 수 있기 때문에, 인스턴스 변수라고 불린다.
- 클래스 변수 : 클래스 선언 static 키워드와 함께 선언된 필드이다. 이 필드는 모든 인스턴스들이 공유하는 값이다. 클래스 명으로 접근이 가능하고, 클래스 하나에 한 값이기 때문에 클래스 변수라고 불린다.
- 로컬 변수 : 메서드 선언 사이에 등장하는 변수로 다른 클래스에서 접근할 수 없는 변수이다. 메서드 영역에서만 임시로 사용되는 변수이다.
- 매개 변수 : 매개 변수는 메서드의 인자로 전달되는 변수를 의미한다.
인스턴스 변수와 클래스 변수는 통상 멤버 변수라고 부르기도 한다. (단, 멤버 변수는 초기화를 하지 않더라도 기본값으로 초기화되자만, 로컬 변수는 반드시 초기화를 해줘야 한다.)
'Java' 카테고리의 다른 글
static 변수와 static 메서드 (0) | 2021.05.12 |
---|---|
OOP 란? (0) | 2021.04.20 |
가비지 컬렉션(Garbage Collection)이란? (0) | 2021.04.18 |
JVM은 무엇이며 자바 코드는 어떻게 실행하는 것인가? (0) | 2021.04.18 |