728x90
반응형
SMALL
이번 포스팅에서는 타입 캐스팅과 강제적 형변환에 대해 공부한 내용을 공유합니다.
데이터를 다룰수 있는 크기에 따라 적절하게 형변환을 진행하면 됩니다.
단, 형변환이 불가능하거나 데이타의 손실이 발생하는 대형사고가 날 수 있으니 주의해서 해야합니다.
728x90
byte b1=97; //byte타입 변수 b1을 97로 초기화
short s1; //short 타입의 변수 s1 선언
s1 = b1; //자동 형변환 진행(캐스팅)
System.out.println("b1은 "+b1+",s1은 "+s1);
//실행 결과 : b1은 97,s1은 97
//////아래는 자동 형변환이 아닙니다////
int num1= b1+s1; //이유: 좌변,우변 모두 4byte이므로 형변환(캐스팅)이 아니다.
char ch1=65; //이유 :char에서 65라는 숫자는 문자의 코드값을 의미 (코드값65 = 'A')
char ch2=b1; // b1은 변수이기 때문에 음의 값이 올 수도 있어 오류발생
/////////////////////////////////////
char ch2=(char)b1; //위 1번 줄에서 초기화한 b1=97 를 char형으로 형변환(캐스팅)
System.out.println(ch2);
//실행결과: a (코드값 97은 소문자a)
// 강제적 형변환
// 캐스팅 연산자 사용 : (자료형)
short s2= 100; //short 타입의 변수s2를 100으로 초기화
byte b2 = (byte)s2; //[캐스팅 가능](short타입의 s2보다 변환하려는 byte타입이 더 크다)
byte b2 = s2; // [캐스팅 불가능] (데이타를 다루는 그릇의 크기(byte)가 다름)
System.out.println("[데이터 미손실] b2는: "+s2);
//실행결과: [데이터 미손실] b2는: 100
byte a3 = 120;
short b3 = a3;
System.out.println("[데이터 미손실] b3는: "+b3);
//실행결과: [데이터 미손실] b3는: 120
//////데이타 손실이 일어나는 경우
byte b2 = (byte)s2; //24번 줄에서 b2=byte타입의 s2(100)으로 초기화
int num3=300;
b2 = num3; //[x] b2는 byte타입이지만 num3는 int타입이다.(int형이 데이타를 다룰 수있는 크기가 더 크기때문에 에러발생)
b2=(byte)num3; //에러를 잡기위해 int타입을 byte타입으로 강제형변환
System.out.println("[데이터 손실] b2는: "+b2);
//실행결과 : [데이터 손실] b2는: 44
double d1=3.14;
// int num4=d1+num3; 연산결과 double 해결방법
// 방법 1] double형에 담는다
// double num4 = d1+num3; [o]
// 방법 2] 연산결과 전체를 int형으로 변환
// int num4=(int)(d1+num3);
// 방법 3] double형만 int형으로 변환
// num4 = (int)d1+num3;
반응형
SMALL
728x90
반응형
LIST
'JAVA' 카테고리의 다른 글
Java(자바)기초_제어문(조건문) If (4) | 2024.11.16 |
---|---|
Java(자바)기초_연산자(Operator) (4) | 2024.11.15 |
Java(자바)_기초 코딩 연습문제 예제 #1 (25) | 2024.11.14 |
Java(자바)기초_이스케이프(Escape) 문자 / 형식문자열( Format Srting) (22) | 2024.11.12 |
Java(자바)기초 _ 변수와 자료형 (6) | 2024.11.10 |