이것저것

자바 데이터 타입, 변수 그리고 배열 본문

Java

자바 데이터 타입, 변수 그리고 배열

nays111 2021. 4. 26. 22:33

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 typeReference 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 키워드와 함께 선언된 필드이다. 이 필드는 모든 인스턴스들이 공유하는 값이다. 클래스 명으로 접근이 가능하고, 클래스 하나에 한 값이기 때문에 클래스 변수라고 불린다.

- 로컬 변수 : 메서드 선언 사이에 등장하는 변수로 다른 클래스에서 접근할 수 없는 변수이다. 메서드 영역에서만 임시로 사용되는 변수이다.

- 매개 변수 : 매개 변수는 메서드의 인자로 전달되는 변수를 의미한다.

 

인스턴스 변수와 클래스 변수는 통상 멤버 변수라고 부르기도 한다. (단, 멤버 변수는 초기화를 하지 않더라도 기본값으로 초기화되자만, 로컬 변수는 반드시 초기화를 해줘야 한다.)


 

Comments