#다중 파라미터 메소드 ## CODE <a class='btn btn-default' href='/codes/2900'>Link</a> ``` public class Maultiply{ public static void times(double a , double b){ System.out.println(a*b); } // times(2,2)-> (double type)->2.0* 2.0 = 4.0 // times(3,4)-> (double type)->3.0 * 4.0 = 12.0 public static void main(String [] arguments){ times(2,2); //times의 매개변수 a , b에 값을 던짐 times(3,4); } } ``` ## OUPUT ``` 4.0 12.0 ``` 질문1) 정수형의 숫자는 위의 메소드로 올라가서 실수형으로 형변환이 가능하던데 그 외의 경우(문자열,실수형->정수형)은 형태가 맞지 않아서 오류가 뜬다고 하셨는데 지지난 강의를 보면 문자열을 정수형으로 변환시키고 실수형을 정수형으로 변환 시키는 타입들이 있듯이 그런 방법들을 이용해서 강제형전환은 불가능한가요? 파라메터의 경우에 한해서 정수에서 실수형으로 변환만이 가능한지 알고싶습니다.
## 요약 큰 그릇 원리(정보 손실이 없음)에 위배되지 않는 경우, 메소드 호출 시 자동 형변환이 가능합니다. ## 설명 작은 그릇의 내용물은 큰 그릇에 옮겨 담을 수 있습니다. (이를 `큰 그릇 원리`라 칭합시다.) 역으로 큰 그릇의 내용물을 작은 그릇에 담는 경우, 내용물의 손실이 일어 날 수 있습니다. 파라미터 자동 형변환의 경우, 데이터 손실이 일어나면 컴파일 에러를 발생시킵니다. 보다 자세한 내용은 하단 레퍼런스를 참조하세요. (Ref. https://docs.oracle.com/javase/specs/jls/se8/html/jls-5.html#jls-5.3) ### 가능 예1: 정수형 -> 실수형 정수형은 실수형으로 자동형변환이 가능합니다. 왜냐하면 실수는 정수 값을 포함할 수 있기 때문입니다. + 실수 값 = 정수 값 + 소수 값 이는 마치, 작은 그릇의 내용물을 큰 그릇에 옮겨 담을 수 있는 원리와 같습니다. ### 가능 예2: byte < short < int < long 큰 그릇 원리에 의해 아래와 같은 형변환이 가능합니다. ``` byte a = (byte) 12; // 바이트형 변수 short b = a; // byte 값을 더 큰 크기의short 형 변수에 복사. int c = b; // short 값을 더 큰 크기의 int 형 변수에 복사. long d = c; // int 값을 더 큰 크기의 long 형 변수에 복사. ``` ### 가능 예3: SomeClass < Object 객체 또한 큰그릇 원리가 적용됩니다. (추후 객체지향 프로그래밍 관련 학습 내용) 상속 또는 인터페이스 간의 관계가 성립하는 경우, 아래와 같은 자동 형변환이 가능합니다. ``` // 관계 interface OOO {} class AAA implements {} class BBB extends AAA {} // 형변환 OOO inter = new BBB(); // BBB객체를 상위 인터페이스인 OOO타입으로 형변환 Object obj = new AAA(); // AAA객체를 루트 클래스인 Object타입으로 형변환 AAA aaa = new BBB(); // BBB객체를 부모 클래스인 AAA타입으로 형변환 ``` ## PS. 해피 뉴이어! :D
왜 정수에서 실수형 변환이 가능한지 이해가 쏙쏙 아주 잘 되네요.ㅎㅎ 홍팍님 매번 질문에 상세한 설명 감사하고 해피뉴이어입니다. 올해도 잘 부탁드려요. :)