상세 컨텐츠

본문 제목

자바_java.lang.Object 클래스

java_자바

by 쫑메이 2020. 7. 7. 00:58

본문

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

java.lang.Object클래스란?

 

 

 

 

 

 

 

 


java.lang.Object 클래스

 


 

⚬모든 클래스의 슈퍼클래스, Objects는 가장 최상위 클래스, 모든 클래스의 조상 클래스

(java.lang 패키지이므로 별도의 import 필요 없음)

⚬Object는 어떤 클래스가 됐든 간에 모든 클래스를 상속한다

⚬그래서 Object의 멤버는 모든 클래스의 멤버가 된다

( Object 클래스의 모든 멤버는 다른 클래스에서 사용하거나 오버라이딩이 가능)

 

 

 

 

 

 

 

 

 

 

 

 


Object클래스의 주요 메서드


 

 

 

<Object클래스의 주요 메서드>

 

 

 

 

 

 

 

 

 


자바에서 "같다"라는 것은..


 

 

 

만약 “hello”라는 내용을 가지는 두 개의 String 객체가 있을 때 이 두 객체는 같은가? 다른가?

String s3 = new String("Hello");

String s4 = new String("Hello");

 

 

 

 

 

 

 

 

 

 

우리 눈에 “Hello”가 같으니 같다고 보겠지만

자바에서는 new를 해서 객체 생성을 s1, s2 두 번했으니

주소가 다르다. 즉 자바 기준으로 이것은 다른 것이다

 

 

 

 

 

 

 

 

 

하지만 실생활에서 ‘같다’는 표현은 주소값보다 내용을 기준으로 하는 경우가 많다

그래서 Object가 물려준 것을 그대로 쓰기보다는 내용을 비교하도록 오버라이딩 해서 사용할 필요가 있다

Strinig과 같은 API는 미리 equals메서드를 사용해 내용을 비교하도록 오버라이딩 해놓았다

주소값을 비교하고 싶을 경우 ‘==’을 사용하고, 내용을 비교하고 싶을 때는 equals를 사용한다

 

 

 

 

 

 

 

 

 


 

equal( ) 메서드


 

equal( ) 메서드

⚬ 두 객체가 같은지 동등 비교(==) 수행

⚬ 즉, 두 객체의 주소값을 비교하여 같으면 true, 틀리면 false

⚬ 실제 두 객체가 같다라는 의미는 두 객체의 주소값이 아닌 객체가 가지는 멤버 변수가 같다는 의미로 사용됨

⚬ 따라서, 사용자가 정의하는 클래스에 equals() 메서드를 오버라이딩하여 각 객체의 멤버 변수끼리 비교하도록 수정하여 사용함

자바에서 제공하는 대부분의 클래스(API)들은 equals() 메서드가 오버라이딩 되어있으므로 객체 내의 내용 비교가 가능함

ex) String 클래스

 

 

 

 

 

 

 

 

 

 

 


object 클래스의 equals( )의 오버라이딩


 

 

 

전달받은 객체(obj)의 멤버 변수가 현재 인스턴스 내의 멤버 변수와 같은지 판별

이 때 object타입으로 업캐스팅이 되므로 Person2클래스 내의 멤버에 접근 불가능

따라서 object->Persn2타입으로 다운 캐스팅이 필수

두 객체의 변수가 다르거나 instanceof의 연산 결과가 false이면 return false;로

 

 

 

 

 

 

 

 

 

 

equals( ) 자동 오버라이딩 단축키 ==> Alt+Shift+S 한 뒤 h

 

 

 

 

 

 

 

 

 

 

 

 

 

 


String 객체(문자열) 생성 방법


 

 

String 객체(문자열) 생성 방법

리터럴을 할당하는 방법

동일한 문자열이 있는지 상수 풀(Constant Pool)에서 검사하여

동일한 문자열이 존재할 경우 해당 위치의 주소값만 전달한다

String s1 = "Hello";

String s2 = "Hello";

if(s1 == s2) {

System.out.println("s1, s2 주소값이 같다!");

} else {

System.out.println("s1, s2 주소값이 다르다!");

}

생성된 s1과 s2는 문자열 내용도 같고, 주소값도 같다.

 

2. new연산자를 사용하는 방법

동일한 문자열이 존재하더라도 새로운 메모리 공간에 문자열 생성

String s3 = new String("Hello");

String s4 = new String("Hello");

if(s3 == s4) {

System.out.println("s3, s4 주소값이 같다!");

} else {

System.out.println("s3, s4 주소값이 다르다!");

 

}

 

생성된 s3 와 s4 는 문자열 내용은 같지만, 주소 값이 다르다.

 

 

 

 

 

 

 

 

 

 

 


toString( ) 메서드


 

 

toString( ) 메서드

 

어떤 객체의 정보를 문자열로 변환하여 리턴

기본적으로 Object클래스의 toString() 메서드는

객체의 정보가 클래스 명과 객체의 고유값(주소값)을 리턴하도록 정의되어 있음

 

 

일반적으로 객체의 정보는 객체 내의 멤버 변수에 저장된 데이터를 의미하므로

Object클래스의 toString( ) 메서드를 오버라이딩하여 객체 내의 멤버 변수를 문자열로 결합하여 리턴하도록 해야 함

 

 

 

 

 

 

 

 

클래스, ArrayList 클래스 등 -

equals() 메서드 자동 생성(오버라이딩) 기능

(Alt +Shift + S -> H)

클래스, ArrayList 클래스 등 - equals() 메서드 자동 생성(오버라이딩) 기능을 활용하면 쉽게 구현 가능

 

 

 

 

 

 

toString ( ) 메서드를 출력문 내에서 호출하는 경우 생략 가능

참조 변수명만 지정하여 출력 가능하다는 뜻

자바에서 제공하는 대부분의 toString() 메서드가 오버라이딩 되어있으므로 객체의 정보를 리턴 받을 수 있음 ex) String

 

 

 

 

 

 

 

 

 


 

 

 

 

 

 

 

ㅣ읽느라 수고 많으셨어요~ㅣ

 


 

 

 

 

 

 

 


 

 

 

 

 

 

 

 

부족한 글을 읽어주셔서 감사드립니다

아직 부족한 게 많으니

틀린 곳이 있다면

조언의 말씀 꼭 부탁드립니다!!!!

 

 

 

 

 

 

 

 


 

 

 

 

반응형

관련글 더보기