Java. 형변환(Casting) - 숫자타입의 자동형변환, 수동형변환

kimkim·2024년 9월 22일
0

Java. 공부내용정리

목록 보기
27/38

자바의 자료형 대전제

: 자료형(타입)이 일치한 것만 변수에 저장해준다.

형변환

: 자료형 타입을 다른 자료형 타입으로 바꾸는 것

public class Casting1{
	public static void main(String[] args){
    
    	int num = 10; 
        // 정수 자료형, 정수 숫자만 대입 가능
        double num2 = 10.1; 
        // 실수 자료형, 실수 숫자만 대입 가능
    
    	// num = num2; 
        // 불가능 >> int num = 10.1;와 같음
        // double 타입이 int 타입에 대입할 수 없다.
        num2 = num;
        // 가능
        // int 값이 double 변수에 들어갔다x
        // int 타입이 double타입으로 모습을 바꿔서 대입되었다.
        // 모습을 바꿔서 >> '형변환'
        
    }
}

자동형변환, 수동형변환

  • 자동형변환 : 개발자의 작업 없이, 자바에서 판단됐을 때 데이터의 소실 없다면 자바에서 알아서 자동으로 자료형을 바꿔주는 것
  • 수동형변환 : 개발자의 의도로, 자바에서 스스로 안 바꿔주는 것을 강제로 자료형을 바꿔는 것
    • 형변환 방법 : A자료형 변수 = (A자료형 타입) 대입할 B의 값;
    • 예시) num = (int)num2;
public class Casting{
	public static void main(String[] args){
    
    	int num = 10; 
        // 정수 자료형, 정수 숫자만 대입 가능
        double num2 = 10.1; 
        // 실수 자료형, 실수 숫자만 대입 가능
        
        // 정수가 실수가 되는 것은 안전하다.
        // 즉 데이터의 소실이 없다.
        // 10 => 10.0 .소숫점이 붙지만 
        // 결과적으로 같은 값이다.
        // 안전한 변환은 자바가 대신 자동으로 해줌
        // >> 자동 형변환
        
        // 실수가 정수가 되는 것은 위험하다.
        // 즉, 데이터의 소실이 발생할 수 있다.
        // 10.3 => 10 
        // 0.3에 대한 데이터의 소실이 발생한다.
        // 위험한 변환은 자바가 막는다.
        // 에러가 나고, 개발자가 강제로 변환 
        // >> 수동 형변환
        
        num2 = num; // 안전한 자동형변환
        num = (int)num2; 
        // 값 앞에 ()넣고 변화할 타입을 넣으면 형변환을 강제로 시도할 수 있다.
        // 강제형변환
    }
}

형변환 예시 문제

public class Main {
  public static void main(String[] args) {
    // 변수는 수정하지 않습니다.
    int num1 = 10;
    int num2 = 4;
    
    //**대전제**
    // 정수는 정수끼리 계산이 가능하고 결과는 정수로 나온다.
    // 실수는 실수끼리 계산이 가능하고 결과는 정수로 나온다.

	// 정답 1
	System.out.println((double)num1 / (double)num2);
    // 정답 2
    System.out.println((double)num1 / num2); // 출력 : 2.5
    // num1은 int타입에서 double타입으로 수동형변환하였다.
	// num2는 실수와 정수로 계산이 불가능하기 때문에 
    // 계산이 가능하도록 double 타입으로 자동형변환 되었다.
  }
}

주의할 점

: 형변환은 유사한 타입에서만 가능하다.
: 숫자타입 Short

0개의 댓글