자바 오류 질문

조회수 840회

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 내부엔 fieldmethod 가 들어갈 수 있습니다.

    예로 들어주신 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 계산 알고리즘...
    }
    ...
    

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)