[Java] 변수 선언하기, 데이터 타입과 타입 변환

자바에서 다룰 수 있는 데이터 타입


* 데이터 타입(data type)이란? : 컴퓨터에서 변수를 만들 때 반드시 지정해줘야 하는 것으로, 변수 선언시 데이터 타입의 크기에 맞는 공간이 메모리 상에서 할당되어 데이터의 저장이 가능해짐


기본 타입(basic type) -> 크기가 정해져 있음

① 정수형

 데이터 타입 

 크기 

 범위 

 byte

 1 byte 

 -128 ~ 127

 short

 2 byte 

 -32768 ~ 32767 

 int  

 4 byte 

 -(2^31) ~ (2^31)-1 

 long 

 8 byte 

 -(2^63) ~ (2^63)-1 


② 실수형

 데이터 타입 

 크기  

 범위 

 float 

 4 byte 

 -3.4E38 ~ 3.4E38 

 double 

 8 byte 

 -1.7E308 ~ 1.7E308 


③ 문자형

 데이터 타입 

 크기 

 범위 

 char 

 2 byte 

 unicode 


④ 논리형

 데이터 타입 

 크기  

 범위 

 boolean 

 1 byte 

 true / false 



레퍼런스(참조) 타입(reference type)

① 배열에 대한 레퍼런스

② 클래스에 대한 레퍼런스

③ 인터페이스에 대한 레퍼런스



문자열

기본 데이터 타입에는 속하지 않으며, 'String' 클래스를 이용해 선언할 수 있다.

문자열의 표현은 큰 따옴표(" ")로 표현하며, 문자열과 문자열 간의 연결은 '+'연산을 이용해 연결한다.




변수의 선언 방법


지난 글에서 작성한 '식별자 이름을 붙이는 규칙'을 지키면서 변수를 선언해 주어야 한다.


변수 선언의 예

1
2
3
int i;
double d; 
char c1, c2;
cs

왼쪽에 파란 글씨로 표현된게 데이터 타입이고, 오른쪽에 있는 i, d, c1, c2이 모두 변수명이다.

만약 같은 데이터 타입의 변수 여러개를 동시에 선언하고 싶다면 변수명을 콤마(,)로 구분해서 작성한다.




값을 표현하는 방법


프로그램상에서 직접 표현하는 값을 리터럴(literal)이라 한다. 정수형, 실수형, 문자형, 논리형, 문자열 타입 모두 리터럴을 가진다.


정수 리터럴

자바에서 정수 리터럴은 int 타입으로 컴파일 되기 때문에, long 타입으로 지정하고자 할 때는 숫자 뒤에 L이나 l을 붙여준다.

1
2
int i=100;
long l=100L;

cs



실수 리터럴
실수 리터럴은 double 타입으로 컴파일되고, 숫자 뒤에 F나 f를 붙이면 float 타입, D나 d를 붙이면 double 타입으로 강제적으로 변환된다.
1
2
3
double d1 = 1.23;
double d2 = 1.23D;
float f = 1.23F;
cs
모두 실수 1.23을 표현한 것이다.


문자 리터럴
작은 따옴표( ' ' )로 문자를 표현하거나 '\u' 다음에 유니코드 값을 입력해 표현할 수 있다.

1
2
3
char c1 = 'A';
char c2 = '\uac00';    //'가'라는 문자 표현
char c3 = '\n';
cs
위의 c3에서와 같이 작은따옴표 안에 이스케이프 시퀀스(escape sequence)값을 가지고 있을 수도 있다.



논리 리터

1
2
boolean b1 = true;
boolean b2 = 5<3;    //결과는 false이므로 b2에 false라는 값 저장
cs
자바에서는 1, 0을 true, false로 사용할 수 없기 때문에 예를들어 boolean b = 1; 이라는 코드를 입력했을 시에는 오류가 발생한다.



문자열 리터럴

큰 따옴표( " " )로 문자열을 묶어 표현한다.

1
String str = "Hello!";
cs
참고로 문자열은 기본 데이터 타입에 포함되지 않는다.




타입 변환(자료형 변환)


* 타입 변환 : 표현되어 있는 데이터가 서로 다른 타입으로 사용되었을때 그 데이터의 표현 방식을 다른 타입으로 변환하는 것

ex) int형으로 표현된 데이터를 double형으로 바꿈


자동 타입 변환

수식 내에서 대입 연산자(=)의 왼편과 오른편에 위치한 두 피연산자 간의 자료형이 일치하지 않을 때, 컴파일러에 의해 자동으로 발생하는 형 변환 방법이다.

원래의 자료형보다 큰 자료형(높은 등급의 자료형)으로 자동 변환된다. 자료형의 우선순위는 다음과 같다.

byte -> short,char -> int -> long -> float -> double

데이터의 표현 범위가 넓은 자료형으로 형 변환 시 데이터 손실이 발생하지 않지만, 표현 범위가 좁은 자료형으로 형 변환 시에는 데이터의 손실이 발생한다. => 컴파일 오류 발생


자동 타입 변환 예

위와 같이 입력 후에 컴파일을 시도하면 형 변환이 일어나지 않아 7, 8번째 줄에서 에러가 난다.

그리고 i와 d를 각각 출력해보면, 변수 i에는 문자 'A'가 아스키 코드 65에 대응되어 정수 65로 변환되어 값이 저장되고, 변수 d에는 정수 10이 실수형 10.0으로 저장되어 출력되는 모습을 볼 수 있다.


강제 타입 변환

프로그래머가 의도적으로 형 변환 연산자를 사용해 강제로 타입을 변환하는 방법이며, 이 방법은 캐스팅(casting)이라 부르기도 한다.

강제로 타입을 변환시키려 한다면 변환시키고자 하는 데이터 앞에 괄호( )를 입력 후 이 괄호 안에 변환하고자 하는 타입을 지정해준다.


강제 타입 변환 예

실수형 12.345가 정수형으로 강제 형변환 되어 12로 바뀌어 저장되고, 소수점 부분의 손실이 발생하였다.

강제 타입 변환 시 이러한 문제점이 생길 수가 있으니 주의한다.


예제


'프로그래밍 > Java' 카테고리의 다른 글

[Java] 자바의 입출력  (0) 2017.04.20
[Java] 자바 프로그래밍의 기본  (0) 2017.04.05
더보기

댓글,

violet quartz