날아라쩡글이의 블로그입니다.

파일정리03(묵시적 형변환, 명시적 형변환) 본문

java (학원 전) story/java 코딩 파일 정리

파일정리03(묵시적 형변환, 명시적 형변환)

날아라쩡글이 2021. 8. 11. 16:51
반응형



/*FileName : CastingTest.java

1.primitive data type의 형변환 : 묵시적 형변환/ 명시적 형변환//기본형의 형변환
2.reference data type의 형변환 : 묵시적 형변환/ 명시적 형변환 ==>추후 참조형의 형변환

*/


public class CastingTest {

public static void main(String[]args){

byte b1 = 100;
byte b2 = 20;

//compile error발생(확인요망)
//정수형의 계산은 int return
//byte b3 = b1+b2;// 주석을 해제 하게 되면, b1과 b2값이 int로 묵시적 형변환이 되어서 error가 incompatible types : possible lossy conversion from int to byte라는 error가 일어나게 된다. 즉, byte가 아닌 int의 값이 되어야하는 에러가 발생이되었다.

//casting 연산자를 이용한 형변환 ==>명시적 형변환

byte b4 = (byte)(b1+b2);
System.out.println("b4(b1+b2):" +b4);

byte b5 = (byte)(b1+b4); //220의 값이 나온다. 그러나 byte의 값의 경우 1byte로 127값이 나오기 때문에 1byte값에 억지로 명시적 형변환을 시행했으나 overflow로 인하여 -36의 값, 즉 쓰레기값이 나오게 되어 정확한 연산이 어렵다.
//쓰레기값 출력(==>실행시 출력결과 확인 할 것)
System.out.println("b5(b1+b4):" +b5);

//묵시적 형변환

int i1 = b1+b2;
System.out.println(i1);
int i2 = b1+b4;
System.out.println(i2);

//다른 data type연산 ==>data type 이 큰쪽으로 묵시적 형변환
double test01=100+0.5; //4byte와 8byte의 값은 double로 묵시적 형변환이 진행된다. 
System.out.println(test01);
//compile error 발생 (확인요망)
//int test02 = 100+0.5; //double값으로 묵시적 형변환이 일어났는데 그대로 작성했기 때문에 error가 incompatible types : possible lossy conversion from double to int라는 error가 일어나게 된다.즉, double의 값으로 int값을 수정해주어야한다고 에러가 난다.



//실수를 정수형에 대입하면 결과는??==>
int i3 = 201/2; //100으로 나온다 정수 / 정수는 정수이다.
System.out.println("i3(201/2)"+i3);

//정수의 계산을 실수형에 대입시 결과는 ?==>
double d1 = 201/2; //100으로 나온다. 정수/정수의 값을 double에 입력하기 때문에 그냥 100.0이라는 값이 나옴
System.out.println("d1(201/2):"+d1);

//정수 int DataType 201을 실수 double DataType으로 명시적 형변환 후 
//계산 결과를 double DataType으로 받으면 출력결과는==>
double d2 = (double)201/2; //(double*201)/2 로 연산이 된다. casting연산자가 우선순위로 100.5로 출력이 된다.
double d2 = (double)(201/2);//201/2가 먼저 연산 ->그뒤 double의 값의 입력으로 100.0의 값이 출력된다.

 

System.out.println("d2(201/2):"+d2);
}//end of main
}//end of class

 

//작은DateType은 큰 DataType으로 전환시 묵시적 형변환이 된다. 

//큰 DataType은 작은 DataType으로 전환시 명시적 형변환이 된다.

반응형

'java (학원 전) story > java 코딩 파일 정리' 카테고리의 다른 글

파일정리04(2021-08-12)  (0) 2021.08.12
파일정리 04(2021-08-12)  (0) 2021.08.12
파일정리 02 (변수선언, 연산자)  (0) 2021.08.11
DataType (2021-08-11)  (0) 2021.08.11
파일정리 01  (0) 2021.08.11
Comments