9장 java.lang패키지와 유용한 클래스 요약

서현우·2022년 6월 27일
0

자바의정석

목록 보기
22/22

java.lang패키지란?

자바프로그래밍에 가장 기본이 되는 클래스를 포함한 패키지로서, impot문 없이도 사용할 수 있다. String, System 등이 있다.

Object클래스란?

모든 클래스의 최고 조상으로 멤버변수 없이 메서드만 있는 클래스이다. Object클래스의 멤버들은 모든 클래스에서 바로 사용가능하다.

equals(Object obj)

참조변수의 주소값으로 두 객체가 같은지 다른지 비교한다.
(==도 참조형일 때 주소값을 비교한다.)
다만 오버라이딩으로 객체의 주소값이 아닌 iv를 비교하도록 할 수 있다.
String의 equals()도 오버라이딩을 통해 문자열 값을 비교하도록 되어있다.

hashCode()

해싱기법에 사용되는 해시함수를 구현한 것으로, 객체 주소가 아닌 iv로 두 객체를 비교하려고 한다면, equals()와 hashCode() 둘 다 오버라이딩 해야한다. 왜냐하면 같은 객체라면 해시코드도 같아야 하기 때문이다.
String의 hashCode()도 오버라이딩을 통해 같은 문자열이면 같은 해시코드를 반환하도록 오버라이딩 되어있다.
(해시함수 - 찾고자하는 값을 입력하면, 그 값이 저장된 위치를 알려줌.)

toString()

인스턴스에 대한 정보를 String 문자열로 제공한다.
보통 클래스와 인스턴스의 정보(Date) 또는 iv를 문자열로 표현한다.
toString()을 오버라이딩하지 않으면 해시코드를 얻게된다.

얕은 복사와 깊은 복사는?

  • 얕은 복사
    참조형일 경우 원본을 변경하면 복사본도 영향을 받는, 즉 원본과 복사본이 같은 객체를 참조하는 것이 얕은복사이다.
  • 깊은 복사
    원본을 변경해도 복사본은 영향을 받지 않는, 즉 원본과 복사본이 서로 다른 객체를 참조하게 되는 것이 깊은복사이다.

String 클래스란?

문자열을 저장하고, 이를 다루는데 필요한 메서드를 함께 제공하는 변경 불가능한(immutable) 클래스이다. 문자열을 변경 할 때 String클래스는 변경불가능하므로 새로운 인스턴스를 계속 만든다. 따라서 문자열을 변경하는 작업이 많이 필요할 때는 변경 가능한 StringBuffer클래스를 사용하는 것이 좋다. 문자열을 저장하기 위한 char형 배열을 참조변수를 iv로 가지고 있다.

문자열의 생성은 어떻게 하는 것이 좋은가?

문자열을 만들 때는 리터럴로 만드는 것이 new 생성자로 만드는 것보다 좋다. 왜냐하면 리터럴로 만든 것은 Heap의 상수 Pool에 등록되므로 재사용이 가능하기 때문이다.

빈문자열이란?

길이가 0인 문자 배열이다.

String 메서드의 종류는?

char charAt(int index)
int compareTo(String str) //같으면 0, 다르면 사전순으로 양수 또는 음수.
String concat(String str) //문자열 연결
boolean contains(CharSequence s) //문자열이 포함되었는지 검사.
boolean equals(Object obj)
boolean equalsIgnoreCase(String str) //대소문자 구분없이 비교
int indexOf()
int length()
String[] split(String regex) //문자열을 나눠서 배열로 반환
String substring(int begin, int end) // from~to
String toLowerCase() //소문자로 반환
String toUpperCaser() //대문자로 반환
String toString() //String인스턴스에 저장된 문자열을 반환
String trim() //좌우 공백 제거
String.valueOf() //문자열로 변환

join과 StringJoiner는?

문자열을 결합할 때 사용한다.
join() - 문자열을 구분자를 넣어서 결합. split과 반대.

StringBuffer클래스란?

String클래스는 불변성을 가지지만 StringBuffer클래스는 버퍼를 가지므로 변경이 가능하다. 내부적으로 문자열 편집을 위한 버퍼(buffer)를 가지고 있고, 생성할 때 크기를 지정할 수 있다. String클래스처럼 문자열을 저장하기위한 char형 배열의 참조변수를 iv로 가지고있다.
길이가 부족한 경우 새로운 char형 배열을 만들어서 복사해야한다.

StringBuffer의 비교

equals(), hashCode()는 오버라이딩 되어있지 않아서 객체의 주소를 비교한다. toString()은 오버라이딩 되어있어서 담고있는 문자열을 String으로 반환한다. 따라서 담고있는 문자열을 비교하기 위해서는 toString()을 호출해서 String인스턴스를 얻은 다음, 여기에 equals()로 비교해야한다.

StringBuffer클래스의 메서드

String클래스의 메서드에 추가, 변경, 삭제같이 저장된 내용을 변경할 수 있는 메서드가 추가제공된다.

//생성자
StringBuffer() //16문자를 담을 수 있는 버퍼를 가진 인스턴스를 생성
StringBuffer(int length) //length길이만큼의 버퍼를 가진 인스턴스를 생성
StringBuffer(String str) //문자열 str을 갖는 인스턴스를 생성. 버퍼크기는 16+str.length()가 된다.
StringBuffer append() //StringBuffer인스턴스가 저장하고 있는 문자열의 뒤에 덧붙인다.
int capacity() //버퍼크기 반환
char charAt(int index) //지정된 위치에 있는 문자를 반환
StringBuffer delete(int start, int end) //from~to사이 삭제
StringBuffer deleteCharAt(int index) //index위치의 문자를 제거
StringBuffer insert(int pos, ) //pos위치에 추가한다.
int length() //문자열 길이를 반환
StringBuffer replace(int start, int end, String str) //from~to의 문자를 str로 변경
StringBuffer reverse() //문자열의 순서를 거꾸로 바꾼다
void setCharAt(int index, char ch) //index의 문자를 ch로 바꾼다
void setLength(int newLength) //newLength로 문자열의 길이를 변경
Strong toString() //StringBuffer인스턴스의 문자열을 String으로 반환
String substring(int start) //start부터 끝까지 반환
String substring(int start, int end) //from~to를 반환.

StringBuilder란?

StringBuffer는 멀티쓰레드에 안전하도록 동기화 되어있다. StringBuilder는 StringBuffer에서 쓰레드의 동기화만 빠진 것이다.

Math클래스

기본적인 수학계산에 유용한 메서드로 구성된 것.

Math클래스 메서드

static double abs(double a) //절대값
static double ceil(double a) //올림
static double floor(double a) //버림
static double max(double a, double b) //최대값
static double min(double a, double b) //최소값
static double random() //0.0 ~ 1.0 임의의 수
static double rint(double a) //반올림. but 0.5단위로는 가까운 짝수 반환.
static long round(double a) //반올림

래퍼(wrapper) 클래스

기본형을 객체로 다루는 것.

Number 클래스

추상클래스로 Boolean, Character를 제외한 래퍼 클래스의 조상.

문자열을 숫자로 변환

parse - 기본형 반환. valueOf보다 성능이 약간 빠르다.
valueOf - 래퍼클래스 반환

오토박싱 & 언박싱

오토박싱 - 기본형 값을 래퍼클래스의 객체로 자동 변환해주는 것.
언박싱 - 래퍼클래스의 객체를 기본형 값으로 자동 변환해주는 것.

java.util.Objects 클래스

Object클래스의 보조 클래스로 모든 메서드가 Math처럼 static이다. 객체의 비교나 null체크에 유용하다.

static boolean isNull(Object obj) //null이면 true
static boolean nonNull(Object obj) //null이면 false
//같으면 0, 양수, 음수 반환
static int boolean compare(Object a, Object b, Comparator C)
static boolean equals(Object a, Object b) //Object와 다르게 null검사 필요없다.
static boolean deepEquals(Object a, Object b)
static String toString(Object o) //내부적으로 널체크
static int hashCode(Object o) //내부적으로 널체크

정규식이란?

미리 정의된 기호와 문자를 이용해 작성한 문자열을 말하고, 원하는 조건(패턴)과 일치하는 문자열을 찾기 위해 사용한다.

StringTokenizer클래스

긴 문자열을 지정된 구분자를 기준으로 토큰이라는 여러 개의 문자열로 잘라내는데 사용된다.

profile
안녕하세요!!

0개의 댓글