본문 바로가기
JAVA

Java(자바)기초 _ 타입 캐스팅(Casting), 강제 형변환

by 빠빠좋 2024. 11. 11.
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