티스토리 뷰

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. 서로 다른 타입의 변수간의 연산을 형변환을 하는 것이 원칙이지만, 값의 범위가 작은 타입에서 큰 타입으로의 형변환은 생략할 수 있다.

▲ 그림2-21 기본형의 자동 형변환이 가능한 방향

화살표방향으로의 변환, 즉 왼쪽에서 오른쪽으로의 변환은 형변환 연산자를 사용하지 않아도 자동 형변환이 되며, 그 반대 방향으로의 변환은 반드시 형변환 연산자를 써줘야 한다.

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
댓글
공지사항