1. java.lang 패키지

java.lang 패키지는 자바프로그래밍에 가장 기본이 되는 클래스를 포함하고 있음

 

1.1. Object클래스

Object 클래스는 모든 클래스의 최고 조상이기 때문에, Object클래스의 멤버들은 모든 클래스에서 바로 사용 가능

 

  • protected Object clone()
    • 객체 자신의 복사본을 반환
  • public boolean equlas(Obejct obj)
    • 객체 자신과 객체 obj가 같은 객체인지 알려줌
  • protected void finalize()
    • 객체가 소멸될 때 가비지 컬렉터에 의해 자동적으로 호출
  • public Class getClass()
    • 객체 자신의 클래스 정보를 담고 있는 Class인스턴스를 반환
  • public int hashCode()
    • 객체 자신의 해시코드를 반환
  • public String toString()
    • 객체 자신의 정보를 문자열로 반환
  • public void notify()
    • 객체 자신을 사용하려고 기다리는 쓰레드를 하나만 깨움
  • public void notifyAll()
    • 객체 자신을 사용하려고 기다리는 모든 쓰레드를 깨움
  • public void wait(), public void wait(long timeout), public void wait(long timeout, int nanos)
    • 다른 쓰레드가 notify()나 notifyAll()을 호출할 때까지 현재 쓰레드를 무한히 또는 지정된 시간 동안 기다리게 함

 

1.2. String클래스

자바에서는 문자열을 위한 클래스인 String 클래스 제공

 

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

String 클래스에서는 문자열을 저장하기 위해서 문자열 배열변수(char[]) value를 인스턴스 변수로 정의

인스턴스 생성 시 생성자의 매개변수로 입력받는 문자열은 인스턴스변수(value)에 문자형 배열(char[])로 저장되는 것

한 번 생성된 String 인스턴스가 갖고 있는 문자열은 읽어올 수만 있고, 변경할 수는 없음

덧셈 연산자를 사용해서 문자열을 결합하는 것은 매 연산 시 마다 새로운 문자열을 가진 String 인스턴스가 생성되어 메모리 공간을 차지하게 되므로 가능한 한 결합횟수를 줄이는 것이 좋음

문자열 간의 결합이나 추출 등 문자열을 다루는 작업이 많이 필요한 경우에는 String클래스 대신 StringBuffer클래스를 사용하는 것이 좋음

 

문자열의 비교

문자열을 만들때에는 2가지 방법이 있음

1. 문자열 리터럴을 지정하는 방법

2. String 클래스의 생성자를 사용해서 만드는 방법

 

String str1 = "abc"; //문자열 리터럴 "abc"의 주소가 str1에 저장됨
String str2 = "abc"; //문자열 리터럴 "abc"의 주소가 str2에 저장됨
String str3 = new String("abc"); //새로운 String인스턴스를 생성
String str3 = new String("abc"); //새로운 String인스턴스를 생성

 

str1 == str2은 true, str3 == str4는 false의 결과가 나옴

str1.equals(str2), str3.equals(str4)는 두 문자열의 내용 "abc"를 비교하기에 모두 true

 

String 클래스의 생성자와 메서드

  • String(String s)
    • 주어진 문자열을 갖는 String인스턴스를 생성
  • String(char[] value)
    • 주어진 문자열을 갖는 String인스턴스를 생성
  • String(StringBuffer buf)
    • StringBuffer인스턴스가 갖고 있는 문자열과 같은 내용의 String인스턴스를 생성
  • char charAt(int index)
    • 지정된 위치에 있는 문자를 알려줌
  • int compareTo(String str)
    • 문자열과 사전순서로 비교. 같으면 0을, 사전순으로 이전이면 음수를, 이후면 양수 반환
  • String concat(String str)
    • 문자열을 뒤에 덧붙임
  • boolean contains(CharSequece s)
    • 지정된 문자열이 포함되었는지 검사
  • boolean endsWith(String suffix)
    • 지정된 문자열로 끝나는지 검사
  • boolean equals(Object obj)
    • 매개변수로 받은 문자열과 String 인스턴스의 문자열을 비교
  • boolean equalsIgnoreCase(String str)
    • 문자열과 String인스턴스 문자열을 대소문자 구분없이 비교
  • int indexOf(int ch)
    • 주어진 문자가 문자열에 존재하는지 확인하여 위치를 알려줌
  • int indexOf(String str)
    • 주어진 문자열이 존재하는지 확인하여 그 위치를 알려줌
  • int indexOf(int ch, int pos)
    • 주어진 문자가 문자열에 존재하는지 지정된 위치부터 확인하여 위치를 알려줌
  • String intern()
    • 문자열을 상수풀에 등록. 이미 상수풀에 같은 내용의 문자열이 있을 경우 그 문자열의 주소값 반환

....

 

1.3. StringBuffer클래스와 StringBuilder클래스

StringBuffer

StringBuffer클래스의 인스턴스를 생성할 때, 적절한 길이의 char형 배열이 생성되고, 이 배열은 문자열을 저장하고 편집하기 위한 공간으로 사용됨

StringBuffer인스턴스를 생성할 때는 생성자 StringBuffer(int length)를 사용해서 저장될 문자열의 길이를 고려하여 충분히 여유있는 크기로 지정하는 것이 좋음

 

StringBuilder

StringBuffer는 멀티쓰레드에 안전하도록 동기화되어있음

StringBuilder는 StringBuffer에서 쓰레드의 동기화만 뺀 것이다

 

1.4. 래퍼(wrapper) 클래스

래퍼 클래스 : 기본형 값들을 객체로 변환하여 작업을 수행할 때 사용

 

기본형 래퍼클래스 생성자
boolean Boolean Boolean(boolean value)
Boolean(String s)
char Character Character(char value)
byte Byte Byte(byte value)
Byte(String s)
short Short Short(short value)
Short(String s)
int Integer Integer(int value)
Integer(String s)
long Long Long(long value)
Long(String s)
float Float Float(double value)
Float(float value)
Float(String s)
double Doulbe Double(double value)
Double(String s)

 

 

2. 유용한 클래스

2.1. java.util.Objects 클래스

Object클래스의 보조 클래스로 모든 메서드가 static

객체의 비교나 널 체크에 유용

 

2.2. 정규식(Regular Expression) - java.util.regex패키지

정규식 : 텍스트 데이터 중에서 원하는 조건(패턴)과 일치하는 문자열을 찾아내기 위해 사용하는 것으로, 미리 정의된 기호와 문자를 이용해서 작성한 문자열을 뜻함

복사했습니다!