메서드와 형변환

민범·2024년 1월 8일

Java -기본-

목록 보기
17/18

명시적 형변환

  • 메서드를 호출하는데 인자와 매개변수의 타입이 맞지 않다면 어떻게 해야할까? 다음 예제코드를 확인해보자!
public static void main(String[] args){
		double number = 1.5;
    	//printNumber(number); //double을 int형에 대입하므로 컴파일 오류
    	printNumber((int) number); //명시적 형변환을 사용해 double을 int로 변환
    }
public static void printNumber(int n) {
	System.out.println("숫자 : " + n);
  }
}
  • 먼저 주석으로 처리해둔 부분의 주석을 풀고 실행해보자.
printNumber(number) // double을 int형에 대입하므로 컴파일 오류

다음과 같은 이유로 컴파일 오류가 발생한다.

printNumber(number) //number는 1.5 실수
printNumber(1.5) //메서드 호출전 number 변수의 값을 읽음
void printNumber(int n=1.5) //int형 매개변수 n에 double형 실수인 1.5를 대입 시도, 컴파일 오류

이 경우 메서드 호출이 꼭 필요하다면 다음과 같이 명시적 형변환을 사용해야 한다.

printNumber((int) number); // 명시적 형변환을 사용해 double을 int로 변환
printNumber(1); //(double) 1.5 -> (int) 1로 변환
void printNumber(int n=1) //int형 파라미터 변수 n에 int형 1을 대입

실행 결과
숫자 : 1

자동 형변환

int < long < double

  • 메서드 호출시 매개변수에 값을 전달하는 것도 결국 변수에 값을 대입하는 것이다. 따라서 앞서 배운 자동 형변환이 그대로 적용된다.
public static void main(String[] args){
		int number = 100;
    	printNumber(number); //int에서 double로 자동 형변환
    }
public static void printNumber(double n) {
	System.out.println("숫자 : " + n);
  }
}
  • double형 매개변수(파라미터)에 int형 인수를 전달하는데 문제없이 잘 동작한다.


    실행 결과
    숫자 : 100.0

  • 다음과 같이 자동 형변환이 동작한다.
printNumber(number); //number는 int형 100
printNumber(100); //메서드 호출전 number 변수의 값 읽기
***
void printNumber(double n=100) //double형 파라미터 변수 n에 int형 값 100을 대입
void printNumber(double n=(double) 100) //double형 파라미터 변수 n에 int형 값 100을 대입
void printNumber(double n=100.0) //double형 파라미터 변수 n에 int형 값 100을 대입

정리
메서드를 호출할 때는 전달하는 인수의 타입과 매개변수의 타입이 맞아야 한다. 단 타입이 달라도 자동 형변환이 가능한 경우에는 호출 할 수 있다.

profile
웹 백엔드 개발자를 지향하고 있습니다.

0개의 댓글