[toString 메서드]
1. Object 클래스 개요
- 자바의 최상위 클래스는 java.lang.Object 클래스 : jave.lang패키지 안에 Object클래스가 있음
- 자바의 모든 클래스는 Object 클래스로부터 상속 받음
- 새로 정의되는 모든 클래스는 extends 키워드가 없어도 묵시적으로 Object 클래스로부터 상속 받음
- Object 클래스에는 toString() 메서드와 equals() 메서드가 정의되어 있음
- toString 메서드
public String toString()
객체의 문자열을 반환
- equals 메서드
public boolean equals(Object obj)
두 객체의 내용을 비교하여 참, 거짓을 반환
2. toString 메서드 활용
- toString 메서드는 객체의 정보를 문자열 형태로 반환
- 간단한 클래스의 객체를 생성하여 toString 메서드 호출
class House {
double size;
String houename;
public House() {
System.out.println("집 클래스 생성자");
}
public static void main(String args[]) {
House house = new House();
System.out.println(house.toString()); //toString 생략 가능
}
}
- 예제의 경우 Object 클래스에 정의된 toString 메서드가 호출되며 클래스명과 해쉬코드의 조합이 출력됨
- 클래스의 특성에 따라 다른 문자열을 출력하려면 toString 메서드를 다음과 같이 오버라이딩하여 구현해야 함
public String toString() { 새로 만들고자 하는 기능정의 } -> 기존의 Object class의 toString 메서드가 호출되지 X
[equals 메서드]
1. equals 메서드 개요
- 자바의 기본 데이테형(int, float, double 등)에 대해서 비교할 경우 값이 같으면 true
int num1 = 1, num2 = 1;
if (num1 == num2) //true
System.out.println("두 정수는 같다");
- String 클래스와 같은 객체의 내용에 대해서 비교할 경우 동일한 메모리에 할당되었는지를 판단하므로 "==" 연산자를 사용하면 false
String str1 = new String("자바");
String str2 = new String("자바");
if (str1 == str2) //false -> 동일한 메모리에 할당X -> equals를 이용하면 true가 반환됨
System.out.println("두 문자열은 같다.");
- 두 객체변수가 동일한 메모리에 생성되었을 경우 "==" 연산자 비교 시 true
String str1 = new String("자바");
String str2 = str1;
if (str1 == str2) //true
System.out.println("두 문자열은 같다.");
2. equals 메서드 활용
- String 클래스의 문자열 내용을 비교하는 경우
String str1 = new String("자바");
String str2 = new String("자바");
if (str1.equals(str2)) //true
System.out.println("두 문자열은 같다.");
- String 클래스가 아닌 객체의 내용을 비교할 경우
class Car {
String carName = "티코"; -> String 타입의 carName이라는 멤버 변수 생성
}
Car car1 = new Car();
Car car2 = new Car();
if(car1.equals(car2)) //두 객체의 내용이 같더라도 false
System.out.println("두 객체의 내용은 같다");
- 위와 같이 객체의 내용을 비교하기 위해서는 equals 메서드를 오버라이딩하여 구체적으로 비교하여야 함
+ 예제
public class Car {
String carName;
public Car(String str) { -> 생성자
carName = str;
}
public boolean equals(Object obj) { -> 비교할 객체 obj
Car tmp = (Car)obj;
if (carName.equals(tmp.carName))
return true;
else
return false;
}
}
public class EqTest {
public static void main(String args[]) {
Car car1 = new Car("티코");
Car car2 = new Car("티코");
if (car1.equals(car2))
System.out.println("두 객체의 내용은 같다");
else
Systme.out.println("두 객체의 내용은 다르다");
}
}
-> 두 객체의 내용은 같다
[toString과 equals 메서드 사용 예]
public class Exam17_1 {
public static void main(String args[]) {
Exam17_1 exam= new Exam17_1();
System.out.println(exam.toString()); // Exam17_1@58f9d3
String str1 = new String("자바");
String str2 = new String("자바");
Systme.out.println(str1 == str2); // 저장된 메모리 위치가 다르므로 false
String str3 = str1;
System.out.println(str1 == str3); // 동일한 메모리를 사용하므로 true
}
}
'프로그래밍 > 자바(java) 융합개발자 2차' 카테고리의 다른 글
[취성패] 자바 프로그래밍 - 1, 2일차 학습일지(SQL) (0) | 2020.12.15 |
---|---|
[취성패] 자바 배우기 - 선수학습(문자열 클래스) (0) | 2020.12.13 |
[취성패] 자바 배우기 - 선수학습(내부 클래스) (0) | 2020.12.13 |
[취성패] 자바 배우기 - 선수학습(인터페이스) (0) | 2020.12.13 |
[취성패] 자바 배우기 - 선수학습(추상 클래스) (0) | 2020.12.13 |