객체 생성할때 선언부분

조회수 823회

자바 스레드 쪽 공부를 하다가 객체 생성을 하는데

SoloThread s = new SoloThread(10);

s.start();

라는 부분을 축약해서

new SoloThread(10).start();

만 쓰거나 하는 경우를 봤습니다.

위 예제가 아니더라도 몇개 더 보긴 했는데

선언없이 바로 new해서 할당을 할 수 있나요?

어떤방식으로 되어서 위의 코드가 가능한지 궁금해서 질문드립니다!

  • (•́ ✖ •̀)
    알 수 없는 사용자
  • (new SoloThread(10)).start(); 와 같습니다. 즉 SoloThread 객체의 start 메소드 호출입니다. 정영훈 2018.4.30 16:50

1 답변

  • 변수는 단지 객체의 주소(레퍼런스) 를 가리키는 심볼일 뿐입니다. 변수는 가리키고 있는 주소를 편히 가져오기 위한 용도로 사용됩니다.

    변수를 통해 객체의 주소를 가져오지 않아도, 주소를 조달할 수 있는 방법이 있다면 무리 없이 객체에 접근할 수 있습니다.

    new 는 객체를 생성해서 그 주소를 반환하는 역할을 합니다.

    따라서 new SoloThread(10) 를 하면 SoloThread 가 메모리에 생성되어 그 주소가 반환됩니다.

    이때 주소를 변수에 저장하지 않고 바로 접근할 수 있기 때문에 new SoloThread(10).start(); 처럼 생성된 객체를 바로 사용할 수 있는 것입니다.

    C++ 와 같은 언어는 new 로 생성한 객체를 delete 로 해제를 해주어야 하지만, Java 같은 경우 GC(Garbage Collector) 가 존재하기 때문에 알아서 해제가 됩니다.

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

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

(ಠ_ಠ)
(ಠ‿ಠ)