✔ 아래 Document 참고
https://www.w3schools.com/java/java_type_casting.asp
Java Type Casting
W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.
www.w3schools.com
✔ 형 변환 정의
원시 데이터 타입의 값을 다른 타입으로 할당시키는 것
자바에는 두가지 타입의 형변환이 존재한다.
✔ 데이터 형 변환
- 확장 변환(Widening Casting) (=자동 형 변환) - 작은 사이즈 타입에서 큰 사이즈 타입으로 변환
byte → short → char → int → long → float → double - 축소 변환(Narrowing Casting) (=수동 형 변환) - 큰 사이즈 타입에서 작은 사이즈 타입으로 변환
double → float → long → int → char → short → byte
글만 봐서 모르겠다면
아래 예시를 통해서 자세히 알아보자!
Tip ✔
아래 코드를 모두 복사 혹은 다운로드 → IDE 에 붙여넣기 한 다음,
실행해보고 이리저리 코드를 수정해가면서
에러가 뜨면, 왜 에러가 뜨는지 직접 몸소 체험을 해봐야 경험치가 쌓입니다!
이것마저 못하는 게으름뱅이는 코딩 ㄹㅇ 접어야함 ㅅㄱ
아래 댓글창에 질문 언제든지 해주세요!
(시간되는 대로 답변해드리겠습니다)
소스코드 다운 필요하신분은 아래 첨부파일 확인해주세요!
에러를 많이 내 볼수록 실력이 향상 되는거 알고 계시죠!? 🔥
import java.util.*;
public class Conversion {
public static void main(String[] args) {
////////////////////////////////////////////////////////////
// 🟥 Implicit Conversion(암시적 형 변환, 자동 형 변환) 🟥 //
///////////////////////////////////////////////////////////
// : 표현범위가 좁은 데이터 타입에서 넓은 데이터 타입으로의 변환만 허용!
// double은 float보다 표현범위가 넓다!
// → 그래서, double에 float를 넣어도 데이터 손실이 발생X
double a = 3.0F; // Float이지만 double a에 할당하는 순간 double이 됨!
// float은 double보다 표현범위가 좁다!
// → 그래서, 데이터 손실이 발생할 수 있기 때문에 Error!
// float b = 3.0; // ← 3.0 뒤에 아무것도 없으면 double형
// ↑ double형을 float에 넣으면 데이터 손실 발생! → Error
// 🟩 형 변환이 가능한 경우
// byte < short < int < long < float < double
// char < int < long < float < double
// Ex1)
int c = 3;
float d = 1.0F;
double e = c + d; // c + d = 4.0F → double e = 4.0
System.out.println(e);
// Ex2)
int x = 3;
float y = 1.0F;
float z = x + y; // 4.0
System.out.println(z);
//////////////////////////////////////////////
// 🟥 Explicit Conversion(명시적 형 변환) 🟥 //
//////////////////////////////////////////////
// : 자동 형 변환이 적용되지 못한 경우에는 수동으로 형 변환을 해야한다!
// float a = 100.0; // 100.0는 double이라 자동 형 변환이 이뤄지지 않기 때문에 에러!
// ↑ (Why? Double은 float보다 표현범위가 넓어서 데이터 손실!)
// int b = 100.0F; // 자동 형 변환이 이뤄지지 않기 때문에 에러! (Why? float > int라서 데이터 손실!)
// 🟩 아래와 같이 명시적으로 형 변환을 해주어야함!
float i = (float) 100.0; // 100.0는 Double 이지만 float로 명시적으로 형 변환을 변경해주면 에러 X
int j = (int) 100.0F; // 100.0F는 float 이지만 int로 명시적으로 형 변환을 변경해주면 에러 X
}
}
↓↓↓↓ 코드 다운로드 ↓↓↓↓
반응형
'🖥️프로그래밍 언어 > Java' 카테고리의 다른 글
[JAVA] 자바 정적변수(Static variables) = 클래스변수(Class variables) (0) | 2022.09.13 |
---|---|
[JAVA] 자바 Scanner + hasNextInt() (0) | 2022.09.12 |
[JAVA] 자바 메소드(Method) + while문 + 예시 (2) | 2022.09.11 |
[JAVA] 자바 배열(Array) + for문 + for-each문 + 예시 (2) | 2022.09.10 |
[JAVA] 자바 배열(Array) + 예시 (2) | 2022.09.08 |