[Java] new 생성자의 우선순위
글쓴이: gurumong / 작성시간: 월, 2016/10/24 - 2:34오후
int result = new MemberCall().instanceMethod1();
객체 생성과 동시에 메소드를 호출 하는 코드입니다
과정을 아래 처럼 생각해볼 수 잇는데요
1. 객체 생성이 먼저 일어남
2. 이후에 instanceMethod1() 메소드의 호출
그런데 실제로 연산자의 우선순위를 살펴보면
오히려 new 연산자 보다 . 나 () 연산자의 우선순위가 높습니다
(참고 : http://cseweb.ucsd.edu/~ricko/CSE8A/Java_Operator_Precedence_Table.pdf )
그러므로 메소드 호출이 먼저 일어나고 이후에 객체를 생성하는 잘못된 코드여야 할것 같은데요
하지만 컴파일과 실행이 아무런 오류 없이 됩니다
이것을 어떻게 이해할 수 있을까요?
Forums:
해당 우선순위 표를 읽는 법
저 표를 보니 같은 박스 내에 있는 연산자끼리는 동일한 우선순위이고
동일한 우선순위인 연산자끼리는 Associativity란에 적힌 순서대로 가게 된다는 얘기인 듯 합니다.
연산자 우선순위가 몇번째인지 묻는것은 아니였구요
연산자 우선순위가 몇번째인지 묻는것은 아니였구요
저 연산자 우선순위를 참고해서 위 코드를 따져본다면 잘못된 코드여서 아래 처럼 추가적인 괄호가 필요한것 같은데
( new MemberCall() ).instanceMethod1();
실제로는 정상적으로 컴파일과 동작이 된다는게 이상하다는 의문입니다
댓글 달기