ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JAVA] Object 클래스와 Class클래스
    Language/Java 2021. 6. 7. 20:05



    java.lang 패키지

    • 프로그래밍시 import 하지 않아도 자동으로 import된다.
      => import.java.lang.*
    • 많이 사용하는 기본 클래스들이 속한 패키지이다.
      => String, Integer, System....

     

    toString( ) 메서드

    • 객체의 정보를 String으로 바꾸어서 사용할 때 쓰인다.
    • String이나 Integer클래스는 이미 재정의 되어 있다.


    equals( ) 메서드

    • 두 인스턴스의 주소 값을 비교하여 True/False를 반환한다.
    • 재정의 하여 두 인스턴스가 논리적으로 동일함의 여부를 구현할 수 있다.
    • 인스턴스가 다르더라도 논리적으로 동일한 경우 True를 반환하도록 재정의 할 수 있다.

     

    hashCode( ) 메서드

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

     

    clone( ) 메서드

    • 객체의 원본을 복제하는데 사용하는 메서드
    • 생성 과정의 복잡한 과정을 반복하지 않고 복제할 수 있다.
    • clone( )메서드를 사용하면 객체의 정보가 동일한 또 다른 인스턴스가 생성되는 것이므로, 객체지향프로그램에서의 정보은닉, 객체 보호의 관점에서 위배될 수 있다.
    • 해당 클래스의 clone( )메서드의 사용을 허용한다는 의미로 cloneable인터페이스를 명시해준다.

     

    String 클래스

    • 힙 메모리에 인스턴스로 생성되는 경우와 상수 풀에 있는 주소를 참조하는 두가지 방법이 있다.
    • 힙 메모리는 생성될때마다 다른 주소 값을 가지지만, 상수 풀의 문자열은 모두 같은 주소 값을 갖는다.
    • 한번 생성된 String은 불변
    • String을 연결하면 기존의 String에 연결되는 것이 아닌 새로운 문자열이 생성된다.
      => 메모리 낭비가 발생할 수 있다.

     

    StringBuilder, StringBuffer

    • 내부적으로 가변적인 char[]를 멤버 변수로 갖는다.
    • 문자열을 여러번 연결하거나 변경할 때 사용한다.
    • 새로운 인스턴스를 생성하지 않고 char[]를 변경한다.
    • StringBuffer는 멀티 쓰레드 프로그래밍에서 동기화를 보장한다.
    • 단일 쓰레드 프로그램에서는 StringBuilder를 사용하는게 좋다.
    • toString( )메서드로 String반환

     

    Class 클래스

    • 자바의 모든 클래스와 인터페이스는 컴파일 후 class파일이 생성된다.
    • Class클래스는 컴파일 된 class파일을 로드하여 객체를 동적 로드하고, 정보를 가져오는 메서드가 제공된다.
    • Class.forName("클래스 이름")메서드로 클래스를 동적으로 로드한다.
      => Class c = Class.forName("java.lang.String")
    • 클래스 이름으로 직접 Class 가져오기
      => Class c = String.class
    • 생성된 인스턴스에서 Class클래스 가져오기
      => String s = new String( )
      => Class c = s.getClass( )

     

    동적 로딩

    • 컴파일 시 데이터 타입이 binding되는 것이 아닌 실행 중 데이터타입을 binding하는 방법
    • 프로그래밍 시 문자열 변수로 처리했다 런타임시에 원하는 클래스를 로딩하여 binding할 수 있다는 장점을 갖고 있다.
    • 컴파일 시 타입이 정해지지 않으므로 동적 로딩시 오류가 발생하면 프로그램에 심각한 장애가 발생 가능하다.

     

    댓글

[Everything's gonna be fine]