on
타입 변환
타입 변환
타입 변환
타입변환이란 데이터 타입을 다른 데이터 타입으로 변환하는 것을 말한다.
자동타입 변환
강제(명시적)타입 변환
자동 타입 변환(Promotion)
자동 타입 변환은 프로그램 실행 도중에 자동적으로 타입 변환이 일어나는 것을 말한다.
자동 타입 변환은 작은 크기를 가지는 타입이 큰 크기를 가지는 타입에 저장될 때 발생한다.
자동 타입 변환 주의 사항
float은 4byte 크기인데 int(4byte)와 long(8byte) 보다 더 크다고 할 수 있다. 그 이유는 표현할 수 있는 값의 범위가 float이 더 크기 때문이다.
char는 2byte의 크기를 가지지만, char의 범위는 0~65535이므로 음수가 저장될 수 없다. 따라서 음수가 저장될 수 있는 byte타입을 char타입으로 자동 변환 시킬 수 없다.
강제 타입 변환(캐스팅 : casting)
강제적으로 큰 데이터 타입을 작은 데이터 타입으로 쪼개어서 저장하는 것
강제 타입 변환은 캐스팅 연산자 ()를 사용하는데, 괄호 안에 들어가는 타입은 쪼개는 단위이다.
큰 데이터 타입의 값이 작은 데이터 타입의 범위에 들어가 있어야 강제 타입 변환시 데이터 손실 없이 변환 가능하다.
char타입으로 변환된 값을 출력하면 유니코드에 해당하는 문자가 출력된다.
실수 타입(float, double)은 정수 타입(byte, short, int, long)으로 자동 변환되지 않기 때문에 강제 타입변환을 사용해야하는데 이 경우 소수점 이하 부분은 버려지고, 정수 부분만 저장된다.
강제 타입 변환 주의 사항
사용자로부터 입력받은 값을 변환할 때 값의 손실이 발생하면 안된다.
정수 타입을 실수 타입으로 변환할 때 정밀도 손실을 피해야한다. (실수로 변환 시 double타입 사용)
다른 타입으로 변환하고자 할 떄는 변환될 타입의 최소값과 최대값을 벗어나는지 반드시 검사하고 만약 벗어난다면 타입 변환을 하지 말아야한다.
기본 타입 최대값 상수 최소값 상수 byte Byte.MAX_VALUE Byte.MIN_VALUE short Short.MAX_VALUE Short.MIN_VALUE int Integer.MAX_VALUE Integer.MIN_VALUE long Long.MAX_VALUE Long.MIN_VALUE float Float.MAX_VALUE Float.MIN_VALUE double Double.MAX_VALUE Double.MIN_VALUE
연산식에서의 자동 타입 변환
연산은 기본적으로 같은 타입의 피연산자(operand)간에만 수행되기 때문에 서로 다른 타입의 피연산자가 있을 경우 두 피연산자 중 크기가 큰 타입으로 자동 변환된 후 연산을 수행한다.
크기가 작은 타입으로 연산하고 싶다면 강제 변환 후 연산식을 수행하도록 하면 된다.
자바는 정수 연산을 경우 int타입을 기본으로 한다. (byte, char, short)
from http://fun-developer.tistory.com/5 by ccl(A) rewrite - 2021-10-04 22:01:35