자바 오류 질문
조회수 690회
public class EE {
int a = 1;
EE ee = new EE();
ee.a = 2;
}
이렇게하면 오류가 나고
여기서 블록을 하나 더 감싸면 오류가 안나더라구요
public class EE {
int a = 1;
EE ee = new EE();
{ ee.a = 2 };
}
무슨 이유에서일까요?
1 답변
-
안녕하세요! 아마 이미 해결 하셨을거라 믿지만... 그래도 댓글 달아봅니다.
저도 상세하게 알지는 않지만, Java class 내부엔 field 와 method 가 들어갈 수 있습니다.
예로 들어주신
int a = 1;
그리고EE ee = new EE();
모두 EE 라는 클래스 내부의 field 입니다.그치만
ee.a = 2
는 변수를 새로 선언하는 것도 아니고method
형식으로 쓰여진 것도 아닙니다. 그래서 에러가 뜨는 것 아닐까요?
그러면
{}
로 감싸면 왜 허용해 주는지 궁금한데, 복잡한 field 를 선언하기 위해 여러줄의 코드가 필요한 경우가 있기 때문입니다.그럴 경우 말씀해주신 예제처럼
{}
로 감싸서 field 선언을 이어나갈 수 있습니다.예를 들면 Pi = 3.14... 라는 field 를 선언하고 싶은데, Pi 를 계산하는 알고리즘을 한 줄만에 쓸 수 없을 때... 쓸 수 있지 않을까 싶습니다. 아마 아래처럼 쓸 것 같아요.
... public static float PI; static { ...Pi 계산 알고리즘... } ...
댓글 입력