본문 바로가기
프로그래밍/자바

자바 문법 - 기본타입(basic type), 리터럴(literal), 변수(variable), 상수(constant)

by pentode 2018. 4. 9.

자바는 객체 지향 언어이기는 하지만 모든 것이 객체는 아닙니다.

 

언어를 공부하게되면 가장 먼저 언어에서 사용할 수 있는 자료형을 배우게 되는게 일반적입니다. 자바의 자료형은 기본형과 객체형으로

나눌 수 있습니다. 기본형은 객체가 아닙니다.

 

기본형이 사용되는것은 속도 때문이라고 하더군요. 객체를 다루는 것보다 기본형이 속도가 빠르다고 합니다. 이제부터 기본형에 어떤 것들이 있는지 알아보겠습니다.

 

자바 기본타입

 

 

1. 기본형

1.1. 정수형

정수를 저장하는 자료형 입니다. 저장할 수 있는 데이터의 양이 다른 네가지의 형식이 있습니다.

 

- long : 8 바이트 저장공간을 가지는 정수 입니다. -9,223,372,036,854,775,808 에서 -9,223,372,036,854,775,807 까지 저장할 수 있습니다.

- int : 4 바이트 저장공간을 가지는 정수 입니다. -2,147,483,648 에서 +2,147,483,647 까지 저장할 수 있습니다.

- short : 2 바이트 저장공간을 가지는 정수 입니다. -32,768 에서 32,767 까지 저장할 수 있습니다.

- byte : 1 바이트 저장공간을 가지는 정수 입니다. -128 에서 127 까지 저장할 수 있습니다.

 

컴퓨터의 저장공간은 0과 1의 두 가지 상태를 표현할 수 있는 비트(bit)로 구성됩니다. 회로에 전기가 통하느냐(1), 통지 않느냐(0)로 생각하면 되겠습니다. 컴퓨터에서는 이러한 비트(bit)들이 여덟게 단위로 묶어서 사용됩니다. 8개면 1바이트(byte), 2바이트인 16개면 1 워드(word) 라고 합니다. 1024 bit 이면 1kb(kilo byte)가 됩니다.

 

1 바이트의 저장공간은 8개의 0과 1을 나타날 수 있는 비트(bit)로 구성되므로, 1 바이트로 표현할 수 있는 값의 범위는 2의 8승이 되므로 256개의 다른 상태를 표현할 수 있습니다. 정수를 표현하면 -128에서 127 까지 256개 입니다. 중간에 0이 있으므로 대칭이 되지않습니다.

 

 

1.2. 실수형

소수점을 가지는 숫자를 표현합니다.

 

- double : 8 바이트 저장공간을 가지는 실수. 약 ±1.79769313486231570E+308F

- float : 4 바이트 저장공간을 가지는 실수. 약 ±3.40282347E+38F

 

1.3. char 타입

하나의 문자를 저장하는 타입으로 16bit 유니코드 타입 입니다. '\u0000' (or 0) 에서 '\uffff' (65,535) 까지 값의 범위를 가집니다. 유니코드는 영어 이외의 다국어를 저장하기 위해서 사용되는 포맷입니다.

 

1.4. bolean 타입

참과 거짓 두 가지 상태를 표현합니다. 사용할 수 있는 리터럴이 true 와 false 두 개 뿐입니다.

 

 

2. 변수와 리터럴

프로그램에서 특정 타입의 데이터를 변수에 담아서 사용하게 됩니다. 데이터를 담고 있는 그릇이라고 생각하면 됩니다. 어떤 데이터를 담아 둿다가 비워 버리고, 다른 데이터를  담을 수도 있습니다. 즉, 값이 변할 수 있으므로 변수인 것입니다.

 

정수를 담을 수 있는 apple 이라는 이름의 변수를 하나 선언해 보겠습니다. 문장의 끝은 세미콜론으로 끝납니다. "자바 문법 - 프로그램 기본구조" 를 참조하세요.

 

int apple;

 

먼저 변수의 이름을 어떻게 짓는지부터 알아보겠습니다. 변수 이름을 글자, 숫자, 언더스코드(_), $ 문자를 사용해서 만들 수 있습니다. 공백이나 특수문자는 사용할 수 없습니다. 글자라고 한것을 영어 뿐만 아니라, 한글 도 사용가능합니다.

 

int 사과;

 

이것도 맞습니다. 그리고 변수 선언시 콤마(,)로 분리하여 한번에 여러개를 선언하는 것도 가능합니다.

 

int apple, 사과, banana;

 

언더스코어(_)와 $ 는 자동 생성 코드나 내부적으로 사용되므로 일반적으로는 쓰지 않는것이 좋습니다. 프레임웍이나 라이브러리를 만들때는 사용된 것이 보이기도 하는데, 잘 쓰지 않습니다.

 

위에서는 변수가 선언이 되기는 했지만 아무 값도 넣지 않은 상태입니다. 초기화가 되지 않았다고 합니다. 변수에 최초로 값을 할당하는것을 변수를 초기화 한다고 합니다.

 

초기화 되지 않은 변수를 연산에 사용하면 에러가 발생합니다. 변수를 반드시 초기값을 넣어준 뒤에 사용해야 합니다.

 

int apple = 5; 처럼 선언과 동시에 값을 넣어 줄수도 있습니다.

 

int apple;

apple = 5;

 

변수를 선언한 다음에 초기 화하는 것도 가능합니다. 이렇게 어떤 값을 넣을때 사용되는 값, 위에서 5 와 같은 것은 리터럴(literal) 이라고 합니다. 즉시값(immediate value)라고도 부릅니다.

 

float 형 리터럴의 끝에는 F 를 붙여서 표시합니다. double 형은 D, long형을 L 을 붙입니다. 각각은 소문자를 사용해도 되고, 선택적 입니다.

 

long count = 10000L;

float f1 = 2.3F;

double d1 = 5.6D;

 

boolean 타입의 리터를은 true 와 false 두 개 밖에 없습니다.

 

 

3. 상수

상수를 값을 한번 입력하면 그 값을 다시는 바꿀 수 없는 것을 뜻합니다. 상수를 만들기 위해서는 final 지시자를 사용합니다.

 

final int DAY_OF_WEEK = 7;

 

또한 상수의 이름은 관습적으로 대문자와 언더스코어( _ ) 를 사용합니다. 물론 소문자를 사용해도 문법적으로 오류는 아니지만 대문자로 사용된게 있으면 선언될 곳을 보지 않더라도 상수라는 것을 금방 알아 볼 수 있도록 관습을 따르게 좋습니다.

반응형