기본 자료형(primitive): 아예 객체가 아니라서 toString() 존재 X
(출력 시엔 보통 System.out.println(10);처럼 값이 그냥 찍힘)
래퍼 타입(Integer, Long, Double, …): toString() 오버라이딩 되어 있음
직접 만든 클래스: 안 만들면 Object.toString() 그대로 → 클래스명@해시코드 형태
→ 필요하면 직접 오버라이딩해야 한다.
배열(Array): toString() 오버라이딩 안 되어 있음 → [I@1a2b3c 같은 형태로 나옴.
→ 내용 보려면 Arrays.toString(arr) / 다차원은 Arrays.deepToString(arr) 사용.
컬렉션(List/Set/Map): toString() 오버라이딩 되어 있음 → "[a, b]", {k=v}처럼 나옴.
단, 요소에 네가 만든 객체가 들어있고 그 객체가 toString() 없으면, 리스트 안에서도 Foo@1a2b3c로 보임.
String / Enum / record:
String.toString()은 자기 자신을 돌려줌Enum은 기본적으로 이름(name)을 출력.record는 필드명=값 형태로 자동 생성된 toString() 제공