- 07. Casting(형 변환)2023년 12월 02일 23시 19분 45초에 업로드 된 글입니다.작성자: Hyeongseon_Yu

이전발행글
2023.12.02 - [Java 입문] - 06. Scanner(스캐너) 클래스와 사용법
06. Scanner(스캐너) 클래스와 사용법
2023.12.01 - [Java 입문] - 05.DataType 데이터의 종류 05.DataType 데이터의 종류 2023.12.01 - [Java 입문] - 04. Variable , Scope(변수와 유효범위) 이전발행글 04. Variable , Scope(변수와 유효범위) 이전 발행글 2023.12.01
devhyeongseon.tistory.com
* 형 변환(type casting)
- 데이터의 크기
# byte(1) < short(2) < int(4) < long(8) < float(4) < double(8)
- float은 4바이트인데 long보다 큰 타입인 이유는 표현할 수 있는 값의 경우의 수가 float이 더 크기 때문입니다.
- 크기가 작은 데이터 타입을 크기가 큰 데이터 타입으로 변환할 때는 캐스트 연산자를 사용하지 않아도 컴파일러에 의해 자동으로 형 변환이 일어납니다.(자동 형 변환: Promotion)
- 크기가 큰 데이터 타입을 크기가 작은 데이터 타입으로 변환할 때는 반드시 캐스트 연산자를 사용하여 변환할 데이터 타입을 명시해야 합니다.(강제 형 변환: Type Casting). 그렇지 않으면 컴파일시 오류가 발생합니다.
- 서로 다른 타입의 데이터의 연산을 진행할 경우 두 데이터 중 큰 데이터 타입을 가진 쪽에 맞추어 자동 형 변환된 후 연산을 진행합니다.
- int형보다 작은 데이터타입의 연산을 진행할 경우 자동으로 int형으로 형 변환이 이루어집니다.public class Casting01 { public static void main(String[] args) { // 1. 크기가 작은 타입을 큰 타입에 저장할 때는 자동으로 형변환이 일어납니다. // JVM이 자동 형변환 시킵니다. byte b = 10; short s = b; // byte -> short로 자동형변환 int i = b; long l = b; char c = '가'; // 2byte int j = c; // char -> int로 자동형변환 System.out.println(j); int k = 1000; double d = k; // int -> double System.out.println(d); } }출력결과

public class Casting02 { public static void main(String[] args) { // 2. 크기가 큰 타입을 작은 타입에 저장할 때는 (type) 캐스팅을 합니다. int i = 70; byte b = (byte) i; // int -> byte형변환 char c = (char) i; // int -> char형변환 System.out.println(b); System.out.println(c); float f = 3.14F; int j = (int) f; // float -> int 형변환 // 주의할점 // 형변환시 저장할 수없는 범위가 들어오면 잘려나간값 이 저장됩니다. int k = 1000; byte bb = (byte) k; System.out.println(bb); // 예외적인 형변환 - char-> short형으로 변경할 때도 명시적으로 형변환 char cc = 'A'; short ss = (short) cc; } }출력결과

public class Casting03 { public static void main(String[] args) { // 연산이 일어났을 때 형변환 System.out.println('A' + 10); // 왜 75가 나올까? // 1. 서로 다른타입의 연산에서 큰 타입에 맞추어 자동 형변환 됩니다. char c = 'B'; int i = 2; char cc = (char) (c + i); int ii = c + i; // ok System.out.println(cc); System.out.println(ii); // 2. int형보다 작은 타입의 연산은 무조건 int가 됩니다. byte b1 = 100; byte b2 = 3; byte b3 = (byte) (b1 + b2); } }출력결과

'Java 입문' 카테고리의 다른 글
09. if문 기초 (0) 2023.12.04 08. Array (배열) 기초 (0) 2023.12.03 06. Scanner(스캐너) 클래스와 사용법 (0) 2023.12.02 05.DataType 데이터의 종류 (0) 2023.12.01 04. Variable , Scope(변수와 유효범위) (0) 2023.12.01 댓글