Object 클래스
1. java의 모든 클래스의 조상 클래스이다.
==> java의 가장 최상위 조상 클래스
2. 사용자가 정의한 클래스에 자동으로 상속됨.
==> 단, extends 키워드를 사용하지 않은 클래스만 상속이 됨.
Object 클래스의 주요 메서드
- toString() :
1) 객체 자신의 정보를 문자열로 반환.
2) 인스턴스에 대한 정보를 문자열로 제공할 목적으로 사용됨.toString() 메서드 재정의
3) Object 클래스에서 상속 받은 메서드를 유용한 정보가 반환이 되도록 재정의.
4) 해당 클래스의 멤버 변수가 정보를 가지고 있는데 가지고 있는 데이터가 올바른 값이 담겼는지 혹은 틀리게 담겨져 있는지 확인하고 싶은 경우에 toString() 메서드를 재정의하여 값을 확인할 수 있음.
5) 사용자가 임의로 output() 메서드를 사용하는 것보다 toString()을 사용하는 게 안전하고 좋음.
- getClass() : - 객체 자신의 클래스 정보를 담고 있는 Class 인스턴스를 반환함.
- hashCode() : - 객체 자신의 해쉬코드를 반환함.
public class Ex01 {
public static void main(String[] args) {
Ex01 ex01 = new Ex01();
Ex01 ex02 = new Ex01();
System.out.println("toString() : " + ex01.toString()); // toString() : 객체 자신의 저보를 문자열로 반환
System.out.println("getClass() : " + ex01.getClass()); // getClass() : 개게 자신의 클래스 정보를 담고 있는 Class 인스턴스 반환
System.out.println("hashCode() : " + ex01.hashCode()); //hasCode() : 객체 자신의 해쉬코드를 정수값으로 반환
if(ex01 == ex02) {
System.out.println("같다 ");
}else {
System.out.println("다르다");
}
}
}
결과
toString() : object.Ex01@15db9742
getClass() : class object.Ex01
hashCode() : 366712642
다르다 // ==> new로 ex01과 ex02를 생성했기에 주소값이 서로 다르다
- equals() : - 객체 자신과 또 다른 객체가 같은 객체인지 알려주는 메서드(boolean)
- clone() : - 객체 자신의 복사본을 반환함.
예제01) toString() 메서드 재정의
package object;
// toString() 메서드 재정의
class Student { // extends Object 가 생략
String name;
int hakbun;
String major;
String phone;
public Student() { } // 기본 생성자
// 인자 생성자
public Student(String name, int hakbun, String major, String phone) {
this.name = name;
this.hakbun = hakbun;
this.major = major;
this.phone = phone;
}
// 학생의 정보를 출력하는 메소드
// void getStudentInfo() {
// System.out.println("학생 이름 : " + name);
// System.out.println("학생 학번 : " + hakbun);
// System.out.println("학생 학과 : " + major);
// System.out.println("학생 연락처: " + phone);
// }
// toString() 메서드 재정의
@Override
public String toString() {
return "학생 이름 : "+name+", 학생 학번 : "+hakbun+
", 학과 : "+major+", 학생 연락처 : "+phone;
}
}
public class Ex02 {
public static void main(String[] args) {
Student student = new Student("홍길동", 2021031601, "자바학과", "010-1111-2222");
//student.getStudentInfo(); // 학생 정보 확인 메서드 호출
// 생성자를 이용해 멤버변수에 넣어놓은 데이터가 올바르게 들어가 있는지 확인하기 위한 메서드
System.out.println(student.toString());
}
}
결과
학생 이름 : 홍길동, 학생 학번 : 2021031601, 학과 : 자바학과, 학생 연락처 : 010-1111-2222
예제02) Object 자료형으로 변수 선언하기
package object;
public class Ex03 {
// object 자료형으로 변수 선언하기
public static void main(String[] args) {
// String 배열 객체 생성
String[] str = new String[4];
str[0] = "홍길동";
str[1] = "서울시 마포구";
str[2] = "hong";
// str[3] = 150; // 자료형이 불일치
str[3] = "1234";
for(String k : str) {
System.out.println("str 배열 요소 : " + k);
}
System.out.println();
// Object 배열 객체 생성
Object[] obj = new Object[4];
obj[0] = "이순신";
obj[1] = 150; // 정수{int) 자료형
obj[2] = true;
obj[3] = 3.15;
for(Object k : obj) {
System.out.println("obj 배열 요소 : " + k);
}
}
}
결과
str 배열 요소 : 홍길동
str 배열 요소 : 서울시 마포구
str 배열 요소 : hong
str 배열 요소 : 1234
obj 배열 요소 : 이순신
obj 배열 요소 : 150
obj 배열 요소 : true
obj 배열 요소 : 3.15
'Back-End > Java' 카테고리의 다른 글
[Java] 래퍼 클래스(wrapper class) (0) | 2021.09.17 |
---|---|
[JAVA] 다양한 형태의 클래스 선언 방법과 중첩클래스(inner class) (0) | 2021.09.17 |
[Java] 스코프와 this (0) | 2021.08.27 |
[Java] 캡슐화(Encapsulation)_getter와 setter (0) | 2021.08.26 |
(스크랩) [Java] Public class 와 class의 차이 (0) | 2021.08.25 |
댓글