티스토리 뷰
byte b = 1000; // 에러. byte타입의 범위(-128 ~ 127)를 벗어난 값의 대입
형변환(Casting)
- 변수 또는 상수의 타입을 다른 타입으로 변환하는 것
- (타입)피연산자
- () : 형변환 연산자, 캐스트 연산자
double d = 85.4;
int score = (int)d;
// 두 번째 줄 연산과정
int score = (int)d;
int score = (int)85.4;
int score = 85;
Ex3_5 실습하기
자동 형변환
- 경우에 따라, 형변환을 생략하면 컴파일러가 생략된 형변환을 자동적으로 추가해준다.
- 기존의 값을 최대한 보존할 수 있는 타입으로 자동 형변환한다.
- 1. boolean을 제외한 나머지 7개의 기본형은 서로 형변환이 가능하다.
- 2. 기본형과 참조형은 서로 형변환할 수 없다.
- 3. 서로 다른 타입의 변수간의 연산을 형변환을 하는 것이 원칙이지만, 값의 범위가 작은 타입에서 큰 타입으로의 형변환은 생략할 수 있다.
화살표방향으로의 변환, 즉 왼쪽에서 오른쪽으로의 변환은 형변환 연산자를 사용하지 않아도 자동 형변환이 되며, 그 반대 방향으로의 변환은 반드시 형변환 연산자를 써줘야 한다.
incompatible types : possible lossy conversion from int to byte
큰 타입에서 작은타입으로의 형변환은 값 손실이 발생할 수 있다.
float f = 1234; // 컴파일러 - float f = (float)1234;
그러나, 명시적으로 형변환해줬을 경우 컴파일러는 의도적인 것으로 간주하여 에러를 발생시키지 않는다.
byte b = (byte)1000; // OK. 그러나 값 손실이 발생해서 변수 b에는 -24가 저장됨
'Java의 정석_기초편' 카테고리의 다른 글
내부 클래스(inner class) (0) | 2022.10.22 |
---|---|
디폴트 메서드와 static메서드 (0) | 2022.10.22 |
타입 간의 변환방법 (0) | 2022.10.17 |
화면으로부터 입력받기 (0) | 2022.10.17 |
문자열 결합 (0) | 2022.10.17 |
댓글
공지사항