본문 바로가기
JAVA

ep 07. 기본 클래스

by L_SU 2022. 12. 19.

java.lang 패키지

- 프로그래밍시 import 하지않아도 자동 import

- import java.lang.*; 문장이 추가 됨

- 많이 사용하는 기본 클래스들이 속한 패키지

- String, Integer, System 등

Object 클래스

- 모든 클래스의 최상위 클래스

- java.lang.Object 클래스

- 모든 클래스는 Object 클래스에 대해

  • 상속받음
  • 메서드 사용가능
  • 일부 재정의 가능(단, final은 불가능)

- 컴파일러가 extends Object를 추가함

Class Student {}
// 추가
Class Student extends Object{}

 

Object 클래스의 메서드

    •  String to String()
      - 객체를 문자열로 표현해 반환
      - 재정의해 객체에 대한 설명이나 특정 멤버 변수 값 반환
    • boolean equals(Object obj)
      - 두 인스턴스가 동일한지 여부 반환
      -  재정의하여 논리적으로 동일한 인스턴임을 정의 가능
    • int hashCode()
      - 객체의 해시 코드 값을 반환
    • Object clone()
      - 객체를 복제해 동일한 멤버 변수 값을 가진 새로운 인스턴스 생성
    • Class getClass()
      - 객체의 Class 클래스를 반환
    • void finalize()
      - 인스턴스가 힙 메모리에서 제거될 때 가비지 컬렉터(GC)에 의해 호출되는 메서드
      - 네트워크 연결 해제, 열려있는 파일 스트림 해제 등 구현
    • void wait()
      - 멀티스레드 프로그램에서 사용하는 메서드
      - 스레드를 기다리는 상태로 만듬
    • vloid notify()
      - wait() 메서드에 의해 기다리고 있는 스레드를 실행 가능 상태로 가져옴

 

toString() 메서드

- Object 클래스의 매서드

getClass().getName()+'@'+Integer.toHexString(hashCode())

// 클래스 이름   해시 코드값
//  object.Book@16f65612

- 객체의 정보를 String으로 바꿔서 사용할 때 많이 쓰임

- String or Integer 클래스에는 이미 재정의 돼있음

- String은 문자열 반환

- Integer는 정수 값 반환

equals() 메서드

- 두 인스턴스의 주소 값을 비교해 true/false를 반환

- 재정의 해 두 인스턴스가 논리적으로 동일함의 여부를 반환

hashCode() 메서드

- 반환 값: 자바 가상 머신이 저장한 인스턴스의 주소값을 10진수로 나타냄

- 서로 다른 메모리의 두 인스턴스가 같다면 재정의 된 equals() 메서드의 값이 true

👉 hashCode() 메서드로 재정의 해 동일한 값이 반환 되도록 함

- String Class: 동일한 문자열 인스턴스에 대해 동일한 정수가 반환됨

- Integer Class: 동일한 정수값의 인스턴스에 대해 같은 정수값이 반환됨

clone() 메서드

- 객체의 원본 복제하는데 사용하는 메서드

- 원본을 유지해놓고 복사본을 사용할 때

- 기본 틀을 두고 복제(복잡한 생성과정 반복X)

- clone() 메서드를 사용하면 객체의 정보가 같은 인스턴스가 또 생선 되는 것이므로

  객체 지향 프로그램의 정보은닉, 객체 보호의 관점에서 위배될 가능성 O

- 객체의 clone()메서드 사용을 허용한다는 의미로 cloneable 인터페이스를 명시해줌

 

String클래스

//String을 선언하는 두가지 방법

String str1 = new String("abc"); // 힙 메모리에 인스턴스로 생성
String str2 = "test"; // 상수 풀에 있는 주소를 참조

문자열 연결

- 한번 생성된 String 값은 불변

- 두 개의 문자열을 연결하면 새로운 인스턴스 생성

- 문자열 연결을 계속하면 메모리에 gabge가 많이 생길 가능성 O

 

StringBuilder, StringBuffer

- 내부적으로 가변적인 char[] 배열을 가지고 있는 클래스

- 문자열을 여러 번 연결하거나 변경할 때 사용하면 유용

- 매번 새로 생성하지 않고 기존 배열을 변경함으로 gabage 생성 X

- StringBuffer는 멀티 쓰레드 프로그래밍에서 동기화 보장

- 단일 쓰레드 프로그렘에선 StringBuilder 사용 권장

- toString() 메서드로 String 반환

Wrapper 클래스

- 기본 자료형에 대한 클래스

기본형 Wrapper 클래스
boolean Boolean
byte Byte
char Character
int integer
long Logn
float Float
double Double

autoboxing, unboxing

-Integer는 객체이고, int는 4byte 기본 자료형

- 두개의 자료를 같이 연산할 때 자동으로 변환이 일어남

Class 클래스

- 자바의 모든 클래스와 인터페이스는 컴파일 후 class 파일로 생성

- class 파일에는 객체의 정보(멤버변수, 메서드, 생성자 등) 가 포함 됨

- Class 클래스는 컴파일된 class 파일에서 객체의 정보를 가져올 수 있음

 

//Object 클래스의 getClass() 메서드 사용
String s = new String();
Class c = s.getClass();

//클래스 파일 이름을 Class 변수에 직접 대입
Class c = String.Class;

//Class.forName("클래스 이름") 메서드 사용
Class c = Class.forName("java.lang.String");

'JAVA' 카테고리의 다른 글

ep 08-1. 제너릭  (0) 2023.01.01
ep 07.문제 풀이  (0) 2022.12.19
ep 06-2.문제 풀이  (0) 2022.12.11
ep 06-1. Interface  (0) 2022.12.11
ep 05-2. 문제 풀이  (0) 2022.12.02