1. equals()메서드
-두 객체가 같은지 동등 비교(==) 수행
=> 즉, 두 객체의 주소값을 비교하여 같으면 true, 다르면 false 리턴
실제 두 객체가 같다 라는 의미는 두객체의 주소값이 아닌 객체가 가지는 멤버변수가 같다는 의미로 사용
따라서, 사용자가 정의하는 클래스에 equals() 메서드를 오버라이딩하여 각개체의 멤버변수끼리 비교하도록 수정하여 사용함
자바에서 제공하는 대부분의 클래스(API)들은 equals() 메서드가 오버라이딩 되어있다
그러므로 객체 내의 내용 비교가 가능함
ex) String 클래스
equals() 메서드 자동 생성(오버라이딩) 기능을 활용하면 쉽게 구현 가능
(Alt + Shift + S / H)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
class Person{
String name;
String jumin;
public Person(String name, String jumin) { // 생성자
super();
this.name = name;
this.jumin = jumin;
}
}
class Person2{
String name;
String jumin;
public Person2(String name, String jumin) { // 생성자 super();
this.name = name;
this.jumin = jumin;
}
// euqals() 메서드 자동 오버라이딩 단축키 :Alt+ Shift + S /h
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Person2 other = (Person2) obj;
if (jumin == null) {
if (other.jumin != null)
return false;
} else if (!jumin.equals(other.jumin))
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
}
|
cs |
1
2
3
4
5
6
7
|
Person2 p10 = new Person2("이름", "비밀");
Person2 p11 = new Person2("이름", "비밀");
// p10 == p11 은 주소값은 다르다
// p10.equals(p11) 은 두객체의 내용은 같다
// p10 = Person2 class 타입 참조변수
// p11 = Object 타입 참조변수 이지만 업캐스팅후 다운캐스팅을해 class 타입 참조변수가
|
cs |
2) toString() 메서드
어떤 객체의 정보를 문자열로 변환하여 리턴
기본적으로 Object 클래스의 toString() 메서드는
객체의 정보가 클래스명과 객체의 고유값(주소값)을 리턴하도록 정의되어 있음
일반적으로 객체의 정보는 객체 내의 멤버변수에 저장된 데이터를 의미하므로
Object 클래스의 toString()메서드를 오버라이딩하여
객체 내의 멤버변수를 문자열로 결합하여 리턴하도록 해야함
toString() 메서드를 출력문 내에서 호출하는 경우 생략 가능
참조변수명만 지정하여 출력 가능
자바에서 제공하는 대부분의 클래스(API)들은 toString() 메서드가 오버라이딩 되어있다
그러므로 객체 내의 내용 비교가 가능함
ex) String 클래스, Array 클래스
toString() 메서드 자동 생성(오버라이딩) 기능을 활용하면 쉽게 구현 가능
(Alt + Shift + S / S)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
class Student {
String id;
String name;
int age;
public Student(String id, String name, int age) {
super();
this.id = id;
this.name = name;
this.age = age;
}
}
class Student2 {
String id;
String name;
int age;
public Student2(String id, String name, int age) {
super();
this.id = id;
this.name = name;
this.age = age;
// Object 클래스의 toString() 메서드 오버라이딩
// = > 현재 인스턴스의 멤버변수를 문자열로 결합하여 리턴
@Override // Alt + Shift + S / S toString() 오버라이딩 자동 생성 단축키
public String toString() {
return "Student2 [id=" + id + ", name=" + name + ", age=" + age + "]";
}
}
Student s = new Student("111", "오", 20);
System.out.println("학생 s의 정보 " + s); // toString() 메서드 생략되어 있음
System.out.println("학생 s의 정보 " + s.toString());
// Object 클래스의 toString() 메서드 : 클래스명@주소값 형태의 문자열 리턴
System.out.println("학생 s의 클래스명 : " + s.getClass().getName()); // 클래스명
System.out.println("학생 s 의 주소값 : " + s.hashCode()); // 주소값
Student2 s2 = new Strudnet2("111", "홍길동", 20);
System.out.println("학생 s의 정보 " + s2); // toString() 메서드 생략되어 있음
System.out.println("학생 s의 정보 " + s2.toString()); // s2 의 멤버변수의 값들이 출력
String studentInfo = s2.toString(); // 변수에 저장하거나 메서드 파라미터에 전달 시 생략 불가!
|
cs |
'Language > Java' 카테고리의 다른 글
List 인터페이스-자료구현(Collection Framework) (0) | 2020.06.18 |
---|---|
Set 인터페이스 - 자료구현(Collection Framework) (0) | 2020.06.17 |
인터페이스(Interface) (0) | 2020.06.11 |
상수 (0) | 2020.06.11 |
final 키워드 (0) | 2020.06.11 |