자바의 변수 수명

컴퓨터 이야기/JAVA 2010. 7. 17. 17:25

자바에서는 수명이 다한 클래스의 할당도 어딘가에서 참조 하고 있다면 계속 물고 늘어지는 경향이 있다

A 라는 클래스가 있으면

A foo;
{
         A bar = new A();
         foo = bar;
} // 여기서 bar 의 수명은 끝이남.

foo.call(); // 과연 에러가 날까?

에러가 안난다. 컴파일에러 및 런타임 에러도 나지 않는다.

자바에서는 내부적으로 참조 카운터를 써서 주소를 다른곳에서 참조하고 있다면 파괴되지 않고 계속 쓰는거 같다.

만약 C++ 였다면? 런타임 에러가 낫겠지.

나는 이것이 좋다고만 보지 않는다. 변수 스코프를 저기서 끝내도록 했으면 프로그래머가 그 뒤론 이 변수를 더 이상 쓰지 않겠다는 의미로 블록을 썼을텐데.

모르는 다른곳에서 나도 모르게 이것을 쓰고 있다면 자칫잘못하면 치명적인 에러로 발전할 수 있기 때문.

뭐 C++ 에서도 지역변수를 포인터로 얻어와서 써도 에러가 나지 않는 경우도 많긴 함.

'컴퓨터 이야기 > JAVA' 카테고리의 다른 글

android studio 단축키  (0) 2015.12.16
java string int 형변환  (0) 2015.12.15
android AlertDialog 띄우기  (0) 2015.12.15
어제 수요일에 자바 스터디 모임을 가졌습니다.  (0) 2010.06.24
: