명시적 형변환과 묵시적 형변환은 반대 개념입니다.
자동형변환(묵시적 형변환 Implicit Casting)
작은 데이터 타입에서 큰 데이터 타입으로 값이 자동으로 형변환되는 것을 말합니다.
이때 데이터의 손실이 없거나 무시할 수 있는 경우 등이 해당됩니다.
ex) 큰 바구니에 작은 사과를 담는 경우
자동으로 상수부분이 float => double로 자동 형변환이 일어납니다.
더 큰 데이터 타입인 double이 더 작은 데이터 타입인 float 보다 표현범위가 크므로, 변수에 정보손실 없이 값을 저장할 수 있다.
명시적 형변환(Explicit Casting)
큰 데이터 타입에서 작은 데이터 타입으로 값이 변환되는 것을 의미합니다
이때 명시적으로 변환 연산자를 사용해야 합니다! 이때는 데이터 손실이 일어날 수 있습니다.
ex) 바늘 구멍에 낙타를 넣는 경우 => 불가능, 의도적으로 변환 연산자를 넣어줘야 함!!
상수 3.0( 데이터 타입: double) 에 의도적으로 float 를 써줘서 명시적 형변환을 해줌!
오른쪽 방향으로는 데이터 손실이 (거의)없는 자동형변환이 가능하지만,
왼쪽 방향으로는 데이터의 손실이 있는 명시적 형변환이 가능하다
🔍 long에서 float로 자동형변환이 가능하니? long은 8바이트고, float는 4바이트인데…
long에서 float로의 자동 형 변환은 가능합니다.
형 변환 가능 여부는 데이터 타입의 크기가 아니라, 데이터 타입의 표현 범위와 소수점 처리 방식에 따라 결정됩니다.
🔍 다음의 상수와 상수를 연산할때 몇번의 형변환이 일어날까?
a+b로 int와 float가 더해지면, (1) int(a)가 float로 형변환된다.
따라서, a는 3.0F 가되고, 3.0F + 1.0F = 4.0F 가 된다.
double c = 4.0F
에서 (2)4.0F가 float => double로 형변환이 되므로, 총 2번의 형변환이 일어난다.
'Java' 카테고리의 다른 글
자바 별찍기 - 마름모 만들기 (0) | 2023.08.18 |
---|---|
스캐너(Scanner) : java의 입력기능 (0) | 2023.08.13 |
Java 상수형 데이터 타입 (0) | 2023.08.11 |
Java 변수 (기본형, 참조형, 기본형의 타입) (0) | 2023.08.11 |
이중반복문 : 별 찍기 (2) | 2023.08.06 |