728x90
불리언 제외 7개의 기본형은 서로 변환 가능하다.
그러나 더 작은 단위로 형 변환하면 데이터가 손실된다.
그럼에도 강행하는 경우를 강제 형 변환이라 한다.
package prac_01;
public class Var_02 {
public static void main(String[] args) {
int askii = 65;
String result_1 = Integer.toString(askii);
System.out.println(result_1);
System.out.println(result_1.getClass());
//더 작은 단위로 강제 변환할 때는 (자료형)으로 명시.
float fnum = 1.23f;
// int result_2 = fnum; 오버플로우 에러
int result_2 = (int)fnum; // 강제 형변환
System.out.println(result_2); // 1 (데이터 손실)
byte b = 10;
int i = b; // (int) 생략 가능
System.out.println(i);
int ii = 300;
byte bb = (byte)ii; // 생략 불가능
System.out.println(bb);
}
}
byte b = 127;
byte b = 128; // 에러
위의 에러 코드가
int b = 128; 이렇게 작성한 것 처럼 ide나 상황에 따라,
더 높은 단위로 오토 캐스팅(자동 형변환)되는 경우도 있음.
b = (byte)(b + 1);
: 위와 같은 경우 1을 더해서 128이 될 것 같지만 범위를 넘었기 때문에
이어서 루프를 돌아 시작 지점부터 카운트.
따라서 -128이 된다. ( 최소값 -128 ~ 최대값 127 범위이므로.)
package prac_01;
public class Var_03 {
public static void main(String[] args) {
byte b1 = 127;
// byte b2 = b1 + 2; 오버플로우
// byte b2 = (byte)b1 + 2; 오류.강제형변환이 b1에만 적용되기 때문
byte b2 = (byte)(b1 + 1); //형변환 대상을 하나로 묶음.
System.out.println(b1);
System.out.println(b2); // 범위 끝 127 ~ 시작점 -128으로 루프.
int i2 = 100;
float f1 = (float)i2;
System.out.println("int to float: " + f1); // 100.0
float f2 = 10.55f;
int i3 = (int)f2;
System.out.println("float to int: " + i3); // 데이터 손실
char ch = 'a';
int i4 = ch;
System.out.println(i4); // 97
int i5 = 65;
char ch2 = (char)i5; // A
System.out.println(ch2);
// any type + "" = 문자열(String) 변환
// String str = (String)i5; //변환수식 사용 불가.
String str = "" + i5;
System.out.println(str); // 문자열 65
System.out.println(str.getClass());
}
}
같이 보면 좋은 글
728x90
반응형
'정리 노트 > 꿈날개_JAVA_기초' 카테고리의 다른 글
10. 변수의 기본 값, 지역변수와 초기화 (0) | 2023.02.07 |
---|---|
9. 문자와 문자열 (더하기 연산과 공백 저장) (0) | 2023.02.07 |
7. 상수와 리터럴, 네이밍 컨벤션 (0) | 2023.02.06 |
6. 메모리 단위, 변수 선언 방법 (0) | 2023.02.05 |
5. 이클립스 기본 사용법 (변수 실습①) (0) | 2023.02.05 |