본문 바로가기
기타/도서

[자바의 정석] 1. java.lang 패키지와 유용한 클래스

by cejin 2023. 11. 18.

: 자바 프로그래밍에서 가장 기본이 되는 클래스를 포함

 

 

1. Object 클래스

- 11개의 메서드로 구성

 

1. public boolean equals(Object obj) : 같은 객체인지

- 오버라이딩 : 주소값이 아닌 멤버변수의 id를 비교하도록.

 

2. public int hashCode() : 찾고자 하는 값을 입력하면, 값이 저장된 위치를 알려줌

- 해시함수를 구현한 것. 데이터 저장 및 검색에 유리

 

3. public String toString() : 문자열로 제공

 

 

2. String 클래스

: 문자열을 위한 클래스

 

1. 변경 불가능한(immutable) 클래스

: 덧셈 연산자를 사용해서 문자열을 결합할 때마다 새로운 문자열을 가진 String 인스턴스가 생성됨

-> StringBuffer 클래스 추천 (문자열간 결합, 추출 등)

 

2. 생성자

String(String s)

String(char[] value)

String(stringBuffer buf)

 

3. 메서드 

char charAt(int index)

int compareTo(String str) : 사전 순서로 비교. 같으면 0. 사전순 이전이면 음수, 이후면 양수

String concat(String str) : 문자열 뒤에 덧붙임

boolean contains(CharSequence s) : s가 포함되어 있는지 검사

boolean endsWith(String suffix) : 지정된 문자열로 끝나는지 검사

boolean equals(Object obj) 문자열과 문자열 비교

boolean equalsIgnoreCase(String str) : 대소문자 구분 없이 비교

int indexOf(int ch) : 문자가 문자열에 존재하는지 확인하여 위치를 알려줌. 못 찾으면 -1

int indexOf(int ch, int pow) : 문자가 문자열에 존재하는지 지정 위치부터 확인

int indexOf(String str) : 주어진 문자열이 존재하는지

String intern() : 문자열을 상수풀에 등록. 상수풀에 같은 문자열이 있으면 주소값 반환

int lastIndexOf(int ch) :  

int lastIndexOf(String str)

int length() : 길이

String replace(char old, char nw) : 문자열의 문자를 새로운 문자로 바꾼 문자열 반환

String replace(CharSequence old, CharSequence nw) : 위와 동일

String replaceAll(String regex, String replacement) : 문자열과 일치하는 것을 새로운 문자열로 모두 변경

String replaceFirst(String regex, String replacement) : 문자열과 일치하는 것 중 첫 번째 것만 새로운 문자열로 변경

String[] split(String regex) : 문자열을 분리자로 나누어 배열에 담아 반환

String[] split(String regex, int limit) : 분리자로 나누어 문자열배열에 담아 반환. 문자열 전체를 지정된 수로 자름

boolean startsWith(String prefix) : 문자열로 시작하는지 검사

String substring(int begin) 

String substring(int begin, int end)

: 시작부터 끝까지 문자열 (끝-1)

String toLowerCase() : 소문자로 변환

String toString() : 인스턴스에 저장된 문자열 반환

String toUpperCase() : 대문자로 변환

String trim() : 공백 제거

static String valueOf(boolean b) : 문자열로 반환하여 반환

static String valueOf(char c)

static String valueOf(int i)

static String valueOf(long l)

static String valueOf(float f)

static String valueOf(double d)

static String valueOf(Object o)

 

 

3. join(), StringJoiner

1. join()

: 여러 문자열 사이에 구분자를 넣어서 결합

 

2. 예시

StringJoiner sj = new StringJoiner(",", "[", "]");

String[] strArr = {"aaa", "bbb", "ccc"};

for(String s : strArr) { sj.add(s.toUpperCase()); }

// [AAA, BBB, CCC]

 

 

4. StringBuffer 클래스

:지정된 문사열 변경 가능. 내부적으로 문자열 편집을 위한 버퍼를 가지고 있음. 

- 버퍼 길이는 충분한 것이 좋음

* String 클래스 : 인스턴스를 생성 시 지정된 문자열 변경 불가. 

 

1. 생성자

StringBuffer()

StringBuffer(int length)

StringBuffer(String str) : 생성자

 

* 생성자 사용법

public StringBuffer() { this(16); }

public StringBuffer(int length) {

   value=new char[length];

   shared = false;

}

 

2. 메서드

String Buffer append() : 문자열 뒤에 붙이기

- 파라미터 : boolean, char, char[], double, float, int, long, Object, String 가능

int capacity() : 버퍼크기

char charAt(int index) : 지정 위치 문자열 변환

StringBuffer delete(int start, int end) : 문자 제거 (end-1까지)

stringBuffer deleteCharAt(int index) : 인덱스 위치 문자 제거

String Buffer insert(int pos, ?) : ?를 위치에 추가 

- 파라미터 : boolean, char, char[], double, float, int, long, Object, String 가능

ine length() : 문자열 길이 반환

StringBuffer replace(int start, int end, String str) : 지정된 범위의 문자열을 주어진 문자열로 변경

StringBuffer reverse() : 순서 거꾸로 나열

void setCharAt(int index, char ch) : 지정된 위치의 문자를 주어진 문자로 바꾸기

void setLength(int newLength) : 지정된 문자열 길이 변경

String toString() : 문자열을 String으로 반환

String substring(int start)

String substring(int start, int end)

문자열을 시작부터 끝-1까지 반환

 

 

5. Math 클래스

: 수학계산에 유용한 메서드

- 상수 2개 : 자연로그의 밑 E, 원주율 PI

- 메서드 : 모두 static

 

1. 올림, 버림, 반올림

1) 원래 값에 100 곱하기

2) Math.round() 사용

3) 다시 100.0으로 나누기

 

2. 메서드

static double abs(double a) : 절댓값 반환 / float, int, long

static double ceil(double a) : 올림

static double floor(double a) : 버림

static double max(double a, double b) : 큰 값 반환 / float, int, long

static double min(double a, double b) : 작은 값 반환 / float, int, long

static double random() : 0.0~1.0 범위 임의의 값 반환 (1.0 제외)

static double rint(double a) : 가까운 정수값 반환. 정가운데 있는 값(.5)는 짝수 반환

static long round(double a) : 소수점 첫째 자리에서 반환한 정수값 반환 / 파라미터 float도 가능

- 정가운데 있는 값은 항상 큰 정수 반환

 

 

6. 래퍼(wrapper) 클래스

: 기본형을 객체로 다룰 수 있음

- Boolean, Character, Byte, Short, Integer, Long, Float, Double

 

 

7. Number 클래스

: 추상클래스. 내부적으로 숫자를 멤버변수로 갖는 래퍼 클래스들의 조상

 

1. 상속 계층도

Object > Boolean

Object > Character

Object > Number > Byte, Short, Integer, Long, Float, Double / BigInteger, BigDecimal

BigInteger : long으로 다룰 수 없는 큰 범위의 수

BigDecimal : double로도 다룰 수 없는 큰 범위의 부동 소수점 수

2) 변환

문자열 -> 기본형 Integer.parseInt

문자열 -> 래퍼클래스 : Integer.ValueOf

3) 오토박싱(autoboxing) & 언박싱(unboxing)

: 기본형과 참조형 간 덧셈이 가능

- 컴파일러가 자동으로 변환하는 코드를 넣어주기 때문

1) 오토박싱 : 기본형 값을 래퍼클래스의 객체로 자동 변환해 주는 것

2) 언박싱 : 반대로 변환하는 것

 

 

 

출처 : 자바의 정석 기초편 1