형변환이란
데이터의 형태를 변환하는 것을 뜻한다. 자바의 형변환에는 자동 형변환과 강제 형변환이 있다.
자바의 형변환에 대해 알기 위해서는 우선 자료형의 크기 구분에 대해서 알 필요가 있다.
자료형 크기 순서는 byte(1byte) < short(2byte) < int(4byte) < long(8byte) < float(4byte) < double(8byte)이다.
※ 정수보다 실수를 큰 값으로 인식하기 때문에 8byte 정수인 long보다 4byte 실수인 float을 큰 값으로 인식한다.
자동 형변환
· 작은 타입에서 큰 타입으로 자동으로 형변환이 이루어지는 것.
· 묵시적 형변환이라고도 한다.
강제 형변환
· 자동 형변환과는 반대로 큰 타입에서 작은 타입으로 형변환이 이루어지는 것.
· 어떤 특정 데이터타입의 변수에 다른데이터값을 저장할 때 ()안에 데이터타입을 적어서 다른데이터 값 앞에 붙이면 된다.
public class Test3 {
public static void main(String[] args) {
//데이터 형 변환(데이터의 형태 변환)
//자바에서 데이터이 형 변환 방법 2가지
//1. 자동 형 변환(묵시적 형 변환)
//2. 강제 형 변환(명시적 형 변환)
//1. 자동 형 변환
long i = 100; //int(4바이트크기)의 100을 long(8바이트크기)의 i변수에 저장할 때
//100은 자동으로 long타입의 데이터로 자동으로 형태가 변환되어
//long타입의 i 변수에 저장되게 된다.
double d = 12.34f; //float(4바이트크기)의 12.34F 값을 double(8바이트 크기)의 d변수에 저장 할 때
//float(4바이트크기)의 12.34f값은 자동으로 double크기의 데이터로
//자동 형 변환되어 12.34d로 만들어 지고 double d변수에 저장 된다.
//즉 작은 크기의 형태는 보다 큰 형태로 형 변환이 가능하다. (float -> double)
double c = 100; //int(4바이트크기)의 100정수값을
//double(8바이트크기)의 c변수에 저장하려고 할 때
//int 값인 100이 double값인 100.0d로 자동 형 변환 되어
//c변수에 저장된다.
//int(4바이트크기)의 변수에 저장된 123값이 실수값 (4바이트크기)의 12.3f와 연산을 위해
//123정수 값이 123.0f로 자동변환 되어서 연산하게 되므로
//123.0f + 12.3f를 이용해 135.3f가 되어 float y변수에 저장되게 된다.
int x = 123;
float y = x + 12.3f; //123+12.3
//135.3
System.out.println(y);
System.out.println("-----------------------------------------");
//2. 강제 형 변환(명시적 형변환)
//문법) 데이터타입1 변수명 = (데이터타입1)다른 데이터값;
//설명) 어떤 특정 데이터타입1의 변수에 다른데이터값을 저장할 때
//()안에 데이터타입1을 적어서 다른데이터 값 앞에 붙이면 된다.
float f = (float)12.34; //12.34는 자바에서 double(8바이트크기)의 데이터로 인식하므로
//이때 12.34를 float(4바이트크기)의 변수f에 담으려고 할 때
//강제로 ~ 12.34를 12.34f로 형 변환(캐스팅)시켜 주어야 한다.
int numInt = 123;
short numShort = (short)numInt; //강제 형 변환
//int a변수 메모리 크기는 4바이트(32비트)인데
//1.1 실수값은 double(8바이트)크기의 데이터 이므로 int a변수에 4바이트 메모리에 저장할 수 없다
//그러므로 1.1을 강제로 개발자가 정수 1로 데이터형태를 변환 해 주어야 한다.
int a = (int)1.1;
System.out.println(a);
}
}
'프로그래밍 > Java' 카테고리의 다른 글
[Java]Scanner vs BufferedReader (1) | 2021.03.08 |
---|---|
[Java]제어문 (0) | 2021.03.03 |
[Java]연산자 (0) | 2021.02.26 |
[Java]변수와 상수 (1) | 2021.02.26 |
[Java]데이터 자료형 (0) | 2021.02.25 |