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 |