강의로 돌아가기
최한성

람다하고는 상관없는 질문인거 같은데, toString 메소드는 왜 사용한건지 궁금합니다.

public class Car{
  public String name;
  public int capacity;  
  public int price;
  public int age;

  public Car(String name, int capacity, int price, int age){
    this.name = name;
    this.capacity = capacity;
    this.price = price;
    this.age = age;
  }

  public String toString(){
    return name;
  }
}

마지막 부분의 toString() 메소드 입니다.
toString을 삭제하면
Car@579bb367
Car@1de0aca6
값들이 나오는데, 어떤 부분을 학습해야 이해할수 있을까요? ;;

작성중인 코드―CarExam.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import java.util.*;
public class CarExam{
  public static void main(String[] args){
    //Car객체를 만들어서 cars에 넣습니다.
    List<Car> cars = new ArrayList<>();
    cars.add( new Car("작은차",2,800,3) );
    cars.add( new Car("봉고차",12,1500,8) );
    cars.add( new Car("중간차",5,2200,0) );
    cars.add( new Car("비싼차",5,3500,1) );

    printCarCheaperThan(cars, 2000);
  }

  public static void printCarCheaperThan(List<Car> cars, int price){
    for(Car car : cars){
      if(car.price < price){
        System.out.println(car);
      }
    }
  }
}
작성중인 코드―Car.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class Car{
  public String name;
  public int capacity;  
  public int price;
  public int age;

  public Car(String name, int capacity, int price, int age){
    this.name = name;
    this.capacity = capacity;
    this.price = price;
    this.age = age;
  }

  public String toString(){
    return name;
  }
}
1 개의 답변
sonjm

toString을 override 하지 않을시 object 클래스의 toString에 접근한다는점을 확인하시면 됩니다.

  • 김영승
    질문자가 출력된다고 한 Car@579bb367 Car@1de0aca6의 @ 뒤에 부분이 메모리 주소인가요? 김영승 2018.02.21 14:15
  • sonjm
    getClass().getName() + "@" + Integer.toHexString(hashCode()); 와 같은식으로 object에 정의되있으며 hashcode가 객체의 메모리 주소입니다. sonjm 2018.04.16 15:29
답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.