toString 관련 질문
안녕하세요
toString 관련 질문입니다
Book book = new Book("asdf", " zxcv");
System.out.println(book);
부분인데요
book 넣으면 처음엔
object.Book@237894 가 나왔는데요
이부분이
getClass().getName() + "@" + Integer.toHexString(hashCode());
이렇게 되어있는 건 이해했습니다
이해가 안 되는 건
왜 toString() 이 호출되는지 입니다.
System.out.println은 book이라는 객체를 매개변수로 넣었는데 왜 book(또는 그 부모 class)의 toString을 찾아서 화면에 호출하나요?
제 생각엔 System.out.println 말고 다른 곳에서 써도 book은 toString()을 반환할 거 같은데
1. 왜 book을 넣으면 toString을 반환하나요?
2. book을 넣으면 toString을 반환하게 하는 관련 소스 위치를 알 수 있을까요?
Answer 1
6
누가 보실 지는 모르겠지만 혹시 해당 강의 보시는 분들 도움 되시라고 알아내서 여기에 작성합니다
println, print 등은 Object가 매개변수일 때(위 상황의 경우 book)
내부에 String.valuejOf을 호출합니다
valueOf는 Object를 받아서 toString을 호출합니다
즉,
System.out.println(book)
-> public void println(Object x)
{ String s = String.valueOf(x) ... }
->public static String valueOf(Object obj)
{ return (obj == null) ? "null" : obj.toString(); }
이런식입니다.
이후 toString이 재정의 되어있으면 그걸 따를 거고 아니면 Object의 toString을 호출하겠죠
이클립스 활성화가 안되는부분이있어요ㅜㅜ
0
430
1
책에 자료실
0
495
1
StudentID
0
554
1
인터페이스와 가상 메서드
0
354
1
11분쯤 price, int price 질문
0
350
1
For문 (중첩된 반복문) 구구단 문의 드립니다.
0
782
1
반복문 별 출력 연습문제
0
390
1
비트 연산자 질문입니다.
1
367
1
Scheduler scheduler = null 굳이 하는 이유가 있나요
1
333
0
Class간의 연결
1
292
1
선생님 스킬
0
392
1
초기화 에러!!!
0
282
1
선생님 영상에서 목소리가 좀 작은 것 같습니다 ㅠㅠ
2
300
0
출력
2
230
0
Main 함수 저번 강의 거가 나와요
0
312
1
결과값오류
1
222
0
printIn 함수 질문
0
449
1
24분 57초에 질문 있습니다!!
0
359
1
1분36초쯤에 말씀하시는 자바닥??그거 보라고 하셨는데 자바닥이 뭐죠..?
0
247
1
메서드와 생성자
0
393
2
참조형 데이터 타입은 클래스 이름과 같아야 하나요?
0
283
1
반환값은 정수 밖에 안되나요?
0
271
1
9분33초 설명!!부탁 드립니다!
0
297
1
48분쯤에 {"B","C","D""} 를 왜 {'B','C','D'}로 바꿨죠?
0
294
1

