[JAVA] toString() 오버라이딩으로 원하는 값 출력하기

2023. 3. 29. 01:12·개발/JAVA

Java에서 String을 출력하면 그대로 담긴 문자열을 출력한다.

String s01="Java";
String s02=new String("월요일");

System.out.println(s01); //JAVA
System.out.println(s02); //월요일

하지만 기본적으로 객체는 출력하면 주소값이 나오게 된다.

ObjectExam oe1=new ObjectExam();
ObjectExam oe2=new ObjectExam("안녕");

System.out.println(oe1); // 주소값
System.out.println(oe2); // 주소값

왜 String은 주소값이 안 나오는걸까?

사실 s01, s02, oe1, oe2 전부 주소값이다.

println(Object obj) 메소드는 인수로 객체가 전달되면 obj.toString() 자동으로 호출하기 때문에 toString이 리턴하는 값을 출력한다.

Object
toString() : 객체의 주소를 하나의 String으로 만들어서 리턴
getClass().getName() + ‘@’ + Integer.toHexString(HashCode())

String은 toString 메소드를 오버라이딩해서 String 자신을 반환했기 때문에 주소가 아닌 문자열이 출력된 것이다.

 

따라서 다른 객체도 toString을 오버라이딩하면 주소가 아닌 다른 값을 바로 출력할 수 있다.

public ObjectExam {
	String s;

	public ObjectExam(){}
	public ObjectExam(String s){
		this.s = s;
	}
	
	@Override
	public String toString(){
		return s;
	}
}

이렇게 toString을 오버라이딩해준다면 ObjectExam은 출력했을 때 바로 s를 출력한다.

ObjectExam oe1 = new ObjectExam("안녕");
ObjectExam oe2 = new ObjectExam("안녕하세요");

System.out.println(oe1); // 안녕
System.out.println(oe2); // 안녕하세요
'개발/JAVA' 카테고리의 다른 글
  • [JAVA] 제한자 static / final / abstract
  • [JAVA] System.currentTimeMillis()와 System.nanoTime()으로 시간 측정하기
로또
로또
게임 개발자 연습생의 발전 일지
  • 로또
    게임 개발 발전소
    로또
  • 전체
    오늘
    어제
    • 분류 전체보기 N
      • 개발 N
        • 코딩테스트
        • JAVA
        • DB
        • Unity N
      • 강의 N
        • 패스트캠퍼스 0원 챌린지
        • 멋쟁이 사자처럼 유니티 부트캠프 N
      • 게임
        • 공부
        • 리뷰
  • 블로그 메뉴

    • 홈
    • 방명록
    • 글쓰기
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    직장인인강
    직장인자기계발
    환급챌린지
    2839
    패캠챌린지
    분리집합
    C#
    코딩테스트
    패스트캠퍼스
    Unity
    자료구조
    오공완
    Java
    트리
    그리디알고리즘
    완전탐색
    패캠인강후기
    한번에끝내는프론트엔드개발초격차패키지Online
    멋쟁이사자처럼후기
    dfs
    백준
    C4D
    그래프
    백트래킹
    수강료0원챌린지
    BFS
    3D웹인터랙티브
    그리디
    게임개발
    패스트캠퍼스후기
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
로또
[JAVA] toString() 오버라이딩으로 원하는 값 출력하기
상단으로

티스토리툴바