메인 클래스가 Test이고
그 안에 check()라는 메소드가 있을때
new Test().check (); 라는 문장은
Test 생성자에 따라서 생성된 임시 인스턴스?로 check라는 메소드를 실행하는 건가여?
그니까 한마디로 저장하지 않고 직선으로 실행하는 명령어인거죠?
그 안에 check()라는 메소드가 있을때
new Test().check (); 라는 문장은
Test 생성자에 따라서 생성된 임시 인스턴스?로 check라는 메소드를 실행하는 건가여?
그니까 한마디로 저장하지 않고 직선으로 실행하는 명령어인거죠?
아 그 자바에요 자바
임시 인스턴스가 아니라, 인스턴스를 new Test(); 이런식으로 생성하면 일단 인스턴스가 생기고, Test aa = new Test(); 이렇게 되면 aa라는 참조변수가 그 인스턴스를 참조할수 있따는거임. new Test().check(); 이거나 aa.check();이거나 aa라는 참조변수를 이용해서 지속적으로 인스턴스를 참조할수 있는거지 동작과정에서 차이는 없어
new Test().check();라고 선언을 해버리면 인스턴스가 메모리공간은 차지하는데 그걸 다시 쓸수가 없으니까 계속 new Test();이렇게 메소드를 호출하고 싶을때마다 객체생성을 해줘야되고 메모리가 비효율적으로 낭비되는거지. 근데 어차피 가비지 컬렉션으로 알아서 회수되긴 할건데
아아.. 마치 연산을 하고 끝낼것인지 그 결과를 변수에 저장할 것인지 같은거군요 ㄷㄷㄷ 아닌가..
뭐.. 어떻게 사용하느냐에 따라 다르지
직접 하다보면 자연스레 이해가 될거임 이런부분은
어떻게 돌아가는지는 알 것 같아요 ! 근데 그럼 new Test ().check (); 를 수행하고 난 뒤에 이 인스턴스는 메모리에서 소멸되는게 아닌가요?
흡 ㄷㄷㄷ 하여튼 감사합니다 ㅠ 독학하느라 이런걸 물어볼데가 흔치않아서..
아마 소멸될거임. C언어 같은 경우는 저걸 동적으로 해제해줘야 할건데 자바는 가비지 컬렉션이 알아서 회수해주는걸로 알고있음
그렇군요 ㅎㅎㅎ 이제 궁금증이 다 해결된 것 같아요 정말로 감사합니다 ㅎㅎ
자바는 동적할당은 호출후 소멸될꺼임