Java 메소드 형변환

메소드에도 명시적 형변환, 자동 형변환을 사용할 수 있다.


명시적 형변환

double타입의 값을 add 메소드 호출하여 인수로 사용하고 있다.

Java 코드

public class Double {
    public static void main(String[] args) {
        double num = 2.5;
        printDouble(num);
    }

    public static void printDouble(int number) {
        System.out.println("number = " + number);
    }
}

Java 실행

java: incompatible types: possible lossy conversion from double to int
  • 컴파일 에러가 발생하여 실행할 수 없다. 내용은 데이터 누락할 수 있다는 의미이다.

명시적 형변환을 사용하여 코드를 다시 실행시켜보도록 한다.

java 코드

public class Double {
    public static void main(String[] args) {
        double num = 2.5;
        printDouble((int) num);
    }

    public static void printDouble(int number) {
        System.out.println("number = " + number);
    }
}

Java 실행

number = 2
  • printDouble((int) num); 명시적 형변환을 사용하여 int 형 인자를 전달하고 있다.

자동 형변환

호출 인자보다 메소드의 파라미터 타입이 큰 경우 자동 형변환을 사용 할 수 있다.

아래 타입들은 내림차 순으로 크다.

  1. int
  2. long
  3. double

Java 코드

public class Double {
    public static void main(String[] args) {
        int num = 5;
        printDouble(num);
    }

    public static void printDouble(double number) {
        System.out.println("number = " + number);
    }
}

Java 실행

number = 5.0
  • 자동 형 변환이 적용되어 코드를 실행할 수 있었다.
    • 메소드 호출 인자 printDouble(num) int형 변수 num 전달한다.
    • 메소드를 선언한 printDouble(double number) 파라미터의 double형 number 보다 전달받은 int형 변수 num 가 작다.