일단 시작해보는 블로그

[Java] 데이터 타입 본문

개발/Java

[Java] 데이터 타입

Selina Park 2019. 8. 23. 18:26

1. 기본 데이터 타입(primitive data types)

정수 : byte, short, int, long

부동 소수점 타입 (실수) : float, double

부울 데이터 타입 : boolean

문자 데이터 타입 : char

 

1 ) 정수와 부동 소수점

 1byte = 8bit, 즉 byte는 0과 1을 표현하는 1비트의 8자리이다.

 

1byte는 128가지(2^8)의 다른 데이터를 가질 수 있다.

https://hyeonstorage.tistory.com/135

프로그램을 설계할 때 메모리 공간이 낭비되지 않도록 적절한 크기의 변수를 선택하는데 주의해야한다.

특정 변수의 값 범위가 확실하지 않을 경우에는 충분한 크기의 공간을 제공해야 한다.

 

2) 명시적 데이터 값 (literal)

java의 정수 리터럴은 int 타입이다. long 타입을 표현하기 위해서는 숫자 끝에 L이나 l을 붙여준다.

 

int age = 20;

long bigdata = 86127531235L;

 

부동 소수점 리터럴은 double형이다. float타입을 표현하기 위해서는 숫자 끝에 F나 f를 붙인다.

double delta = 453.523311903;

float ratio = 0.2363F;

 

3) 문자

char 리터럴은 단일 인용 부호(' ')로 표현된다.

String 리터럴은 이중 인용 부호(" ")로 구분된다. (String 타입은 Java의 기본 데이터 타입이 아니며, 한 클래스의 이름이다.)

 

char  score = 'A'; //A는 char 타입.

String score_str = "A"; //여기서 A는 String타입.

 

4) 부울 (boolean)

boolean은 두가지 유효 값을 가진다. true or false

부울 값은 다른 데이터 타입으로 변환될 수 없고, 다른 데이터 타입도 부울 값으로 변환될 수 없다.

 

2. 데이터 변환

데이터 변환은 확정 변환(widening conversion)과 축소 변환(narrowing conversion)으로 구분된다.

 

1) 확장 변환

확장 변환은 정보가 손실되지 않기 때문에 안전하다. 이 변환은 한 데이터 타입보다 더 큰 타입으로 변환되기 때문에 확장 변환이다.

byte에서 short변환은 안전하다. 따라서 어떠한 정보 손실도 일어나지 않는다.

정수 -> 정수, 부동 소수점 -> 부동 소수점의 확장 변환은 그 값을 보존한다.

하지만 int나 long을 float, long, double로 변환시킬 때, 유효 숫자 중에서 몇 개가 손실될 수 있다.

 

2) 축소 변환

축소 변환은 정보가 손실될 가능성이 많다. 더 작은 공간을 사용하는 다른 타입으로 변환하면서 정보의 일부가 손실될 수 있기 때문이다.

따라서 축소 변환은 일반적으로 피해야 한다.

 

3) 데이터 변환 방법

배정 변환은 한 타입의 값이 다른 타입의 변수에 배정될 때 일어나며, 그 과정에서 값이 새로운 타입으로 변환한다.

캐스팅(casting)은 Java에서 가장 일반적인 형변환 형태이다.

 

예를 들어, 

int score = (int)23.4

여기서 23.4를 int형 score에 배정하기 위해 (int)로 캐스팅 했다. 그 과정에서 데이터 손실이 일어나 score는 23이 된다.

8개의 기본형 중에서 boolean을 제외한 나머지 7개의 기본형 간에는 서로 형변환이 가능하다.

범위가 큰 자료형에서 범위가 작은 자료형으로의 변환인 축소변환은 데이터 손실이 일어날 수 있다.

원칙적으로 모든 형변환에 캐스트 연산자를 이용한 형변환이 이루어져야 하지만, 확장 변환은 값의 손실이 없으므로 캐스트 연산자를 생략하는 것을 허용한다.

 

 

[REFERENCE]

https://hyeonstorage.tistory.com/135

Comments