[Java]Object class의 method 활용

dnjsrms.lee·2022년 6월 3일
0

Java

목록 보기
11/14
post-thumbnail

equals()


  • 두 인스턴스의 주소 값 비교 ⇒ true/false
  • overriding(재정의)하여 논리적으로 동일함의 여부 구현
  • 인스턴스가 다르더라도 논리적으로 동일하면 true를 반환하게끔 재정의 가능

hashCode()


  • hash : 정보를 저장 및 검색하는 자료구조
  • hashCode()는 인스턴스의 저장 주소 반환
  • 인스턴스가 힙메모리에 저장되는 방식
  • 키 값의 저장 위치를 반환해주는 해시 함수 사용

clone()


  • 원본 객체를 복제하는 메서드
  • 동일한 인스턴스를 갖게 됨
  • 명시적으로 clone가능하다는 “cloneable”이라는 인터페이스를 implements 해야 함

String 클래스


  • String 선언
  • String str1 = new String("abc"); -> 힙에 메모리가 생성 String str2 = "abc"; -> 상수 poll(constant pool)에 있는 "abc"의 주소만 가르키는 것
  • 힙 메모리는 생성될때마다 다른 주소 값을 가짐
  • 상수 풀의 문자열은 모두 같은 주소 값을 가짐
  • 한 번 생성된 String은 불변
  • String 연결은 새로운 문자열의 생성 → 메모리 낭비

StringBuilder, StringBuffer


  • 내부적으로 char[]을 가지고 있는데 가변적임
  • 문자열 변경하거나 연결할 때 유용
  • 인스턴스 생성 대신에 char[] 변경
  • StringBuffer는 멀티 쓰레드 프로그래밍에서 동기화(synchronization)을 보장
  • 단인 쓰레드 프로그램에서는 StringBuilder 사용을 권장
  • .append 사용

text block(java13~)


  • html, json 문자열 만드는데 유용함
    • 사용할 일이 많지는 않을 것 같음
  • public static String getBlockOfHtml(){ return """ <body """; }

Class Class


  • 컴파일 된 class파일을 로드하고 정보를 가져올 때 쓰면 됨
  • Class.forName(”클래스 이름”)으로 동적 로드 함
    • Ex) Class c = Class.forName(”java.lang.String”);
  • new없이 Class의 newInstance()메서드로 인스턴스 생성 가능→ 클래스 정보 활용하여 생성하는 것
  • 인스턴스가 있는 상태에서는 .getClass(); 메서드를 사용해서 가져올 수 있음
  • 컴파일 시가 아닌 실행 중에 데이터 타입을 binding하는 것 → 동적 로딩
  • 동적 로딩의 장점 : 동적으로 그때그때 원하는 클래스를 불러올 수 있음
  • 동적 로딩의 단점 : 컴파일 시에 타입 디텍션이 안됨 → 오류발생시 심각한 장애가 발생할 수도 있음
profile
little by little slowly

0개의 댓글