# 잘못된 파라미터 #### CODE <a class='btn btn-default' href='/codes/67525'>Link</a> ``` public class WhatIsWrong { public static void main(String[] args) { int a = ***square((int)3.0);*** int b = ***(int) cube(2);*** System.out.printf("a = %d, b = %d\n", a, b); } public static int square(int n) { return n * n; } public static double cube(double n) { return n * n * n; } } ``` #### INPUT ``` ``` #### OUPUT ``` a = 9, b = 8 ``` 3번째 줄에서 더블인 3.0을 인트로 바꾸는데 square((int) 3.0);이라고 적은 반면 4번째 줄에서 인트를 더블로 바꿀 때는 (int) cube(2); 이런 식으로 메소드 이름 앞에 (int)를 적어주셨는데 왜 이렇게 다른 건가요? 둘이 똑같은 방식으로 바꿀 수는 없는건가요?
## 두 캐스팅은 캐스팅 시점이 다르므로, 다른 방식의 캐스팅을 적용해야 합니다. #### 3번째 줄의 캐스팅은 메소드 호출 전, 입력값을 캐스팅 하는 코드입니다. ``` int a = square((int) 3.0); // 메소드로 전달할 입력값을 3.0이 아닌 3으로 캐스팅 ``` #### 반면, 4번째 줄은 메소드 호출이 끝나고, 반환된 결과값을 캐스팅하는 코드입니다. ``` int b = (int) cube(2); // 메소드에서 반환된 값 8.0을 2로 캐스팅 ```