Object클래스/String클래스

Shaun·2021년 8월 3일
0

JAVA

목록 보기
15/30

Object 클래스

1. toString()

-인스턴스 정보를 문자열로 반환하는 메서드(클래스이름,주소값)

-stringinteger은 각각 문자열값, 정수값이 출력 된다

-재정의 가능

2.equals()

-두인스턴스의 주소값 을 비교(내용 x) (true/false)

-물리적 동일성(주소비교) 뿐 아니라 논리적 동일성(내용비교)을 구현할 때도 equals() 를 재정의하여 사용한다.

-== 단순히 주소값 비교

-stringinteger은 각각 문자열값, 정수값 비교

equals 논리적 비교 재정의
@Override
public boolean equals(Object obj){

if(obj instanceof Student)
Student std=(Student)obj;

if(this.studentId==std.studentId)
else return true;

}
return false;
}

HASH 코드

  • 두 인스턴스가 같다면 hashcode() 메서드에서 반환하는 해시 코드 값이 같아야한다.

  • 논리적으(내용)으로 같은 두 객체도 같은 해쉬코드값을 반환하도록 hashcode() 메서드도 재정의 해야한다(명목상 hashcode 이지 실제주소는 따로 있다.)

  • equals() 매서드를 재정의 했다면 hashcode() 도 재정의 해야함

  • stringinteger은 각각 같은 데이터가 들어있으면 같은 해시코드, integer는 그냥 정수값 반환.

  • 재정의 할떄 equals() 에서 사용한 맴버변수를 활용

  • 실제 인스턴스주소는 = System.indentityHashCode()

Clone ()

  • 클래스의 인스턴스 새로 복제/다른 메모리

  • protected Object clone();

  • @Override
    public Object clone() throws CloneNotSupportedException{

    retrun super.clone();
    }

  • 클론을 사용하려면 객체를 복제해도 된다는 의미로 메인클래스에 Cloneable 인터페이스를 구현해야한다.

  • object 의 clone() 그대로 사용/

  • 배열도 객체 이기때문에 object클래스 사용 가능

String 클래스

1,StirngBuffer vs StringBuilder

  • stringBuffer
    -문자열 안전하게 변경보장(두 스레드가 동시에 변경할때 문자열 안전 하게 변경보장(=스레드 동기화의 안전성)

  • stringBuilder
    -문자열 안전하게 변경보장 x

오토박싱= 기본형을 객체형으로
언박싱 = 객체형을 기본형으로
동적로딩 = 대부분 클래스 정보는 프로그램이 로딩될떄 이미 메모리에 있다./ 프로그램 실행 이후 클래스의 로딩이 필요한 경우 클래스의 동적로딩 방식 사용(class.forName())

문자열비교

Stinrg str1="Abc"
String st3=new String("Abc")

-문자열 리터럴은 이미 존재하는것 재사용한다
-문자열 리터럴은 컴파일시 클래스 파일 에 저장된다
-클래스 파일이 클래스 로더에 의해 메모리에 올라갈때 이때 리터럴들이 상수풀로 이동

공변반환 타입

  • 오버라이딩 할때 조상 메서드의 반환타입자손 클래스의 타입으로 변경
  • 실제로 반환되는 자손 객체의 타입으로 반환할 수 있어서 번거로운 형변환이 줄어든다.

join() / StringJoiner

join(a.b) = a구분자로 구분해서 b를 결합 <-> split(구분자)

profile
호주쉐프에서 개발자까지..

0개의 댓글