메뉴 바로가기 검색 및 카테고리 바로가기

한빛미디어

뇌를 자극하는 java 프로그래밍

뇌를 자극하는 java 프로그래밍 질의응답 게시판입니다.

안녕하세요 질문있습니다

2014-09-15

|

by 자바게이

1126

안녕하세요

String 클래스에 대해 질문있습니다.

System.out.println("yes");에서요

"yes"는 스트링 인스턴스 생성후 레퍼런스를 반환해서 println(레퍼런스)가 되고

그러면 println()메소드가 "yes"라는 String인스턴스 의 레퍼런스 안에 접근해서 toString()메소드를 실행시키라고

명령시키는건지 궁금합니다. println() api 설명보면 단순히 prints~~어쩌구저쩌구로만 설명되있어서..



이 질문이 왜 나왔냐면요



class gg{
string toString()
{ return "hello"}
}

class bb
mian
gg oh=new gg()
System.out.println(gg) gg에서 toString메소드를 주석처리하면 헤쉬코드가 뜨고

주석처리를 해제하면 hello가 뜹니다. 오브젝트 인스턴스와의 오버라이딩때문이라는건 이해하겠는데

toString()호출을 하지도 않았는데 스스로 println()에서 호출한것처럼 나오는지 궁금합니다.



질문2.

String클래스같은경우에 메소드로 toString이 있었습니다.

println(5)같은 경우에는 그냥 오버로딩되있는 println(int x)에 의해 바로 숫자로 띄우는게 맞는건지 궁금합니다

아니면 println(int x)에서 int로 받은다음 다시 toString()을 호출 시켜서 문자열로 출력하는건지 궁금합니다

또 여기서 toString()을 호출할수있다는건 5라는 상수안에도 toString()메소드가 기본적으로 있다는건가요..?



println()과 toString()으로 출력되는 과정이 너무 헷갈립니다..




질문 3.

그리고 인스턴스 하나 선언할때마다 실제로 인스턴스 두개가 생성되는건지 궁금합니다

예를들어서 G라는 인스턴스를 선언과 동시에 생성할때

G의 생성자 안에 있는 super가 오브젝트 인스턴스까지 생성해서 결국 연결된 고리처럼

두개가 딸려 나온다고 표현하는게 맞는지 궁금합니다
댓글 입력
자료실