Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags more
Archives
Today
Total
관리 메뉴

Formoat's Open Blog

Java API Document 본문

Java/Java Basic

Java API Document

snd-snd 2019. 9. 4. 00:34

Java API

자바에서 기본적으로 제공하는 라이브러리로 프로그래밍을 하기 위해 자주 사용되는 클래스와 인터페이스의 모음이다.

자바에서 제공하는 API는 방대하기 때문에 이를 정리한 문서가 존재한다.

 

 

 

Java Platform SE 8

 

docs.oracle.com

 

 

## 자주 사용되는 API ##

1. Object 클래스

1) 자바의 최상위 부모 클래스

2) 모든 클래스는 다른 클래스를 상속 받지 않을 시 Object 클래스를 상속 받는다. (상위 클래스도 결국 Object 클래스를 상속)

3) 모든 클래스는 Object 클래스의 메소드를 사용 가능

 

Return Type Method Remarks
boolean equals(Object o) 동등한 객체인지 여부
int hashCode() 객체의 식별값 반환
String toString() 객체를 설명하는 문자 정보를 반환
Object clone() 객체 복제
void finalize() 객체 소멸자

<표> Object 클래스의 주요 메소드

 

 

(1) equals

현재의 객체가 인자로 전달한 Object 타입의 객체와 동등한 객체인지 여부를 조사하는 메소드로 동등하다면 true를 반환한다.

Object 클래스에서는 단지 ==을 이용한 비교를 하고 있기 때문에 논리적 동등을 판별하고 싶다면 재정의를 해야한다.

 

public class Member {

	private String name;
	private int age;
	
	@Override
	public boolean equals(Object obj) {
		if (obj instanceof Member) {
			Member member = (Member) obj;
			if (this.name == member.getName() && this.age == member.getAge())
				return true;
		}
		return false;
	}
}

 

 

(2) hashCode

객체 고유의 식별값을 의미하며 Object 클래스에서는 객체의 메모리 번지를 이용해 해시코드를 만들어 낸다.

때문에 equals와 마찬가지로 논리적 동등을 판별하고 싶다면 재정의를 해야한다.

(3) toString

객체를 설명하는 문자 정보로 이 객체가 무슨 객체인지 무엇을 하는 객체인지를 명시할 수 있다.

Object 클래스에서는 클래스명@해시코드로 구성된 문자를 반환하도록 되어 있기때문에 사용자 정의 클래스에선

toString 메소드를 재정의 해 객체에 대한 정보를 입력하도록 해야한다.

(4) clone

원본 객체의 필드값과 동일한 값을 가지는 새로운 객체를 생성하는 것을 말하며 얕은 복제, 깊은 복제가 있다.

Object 클래스에서는 얕은 복제를 기본으로 하고 있기 때문에 깊은 복제를 하려면 재정의가 필요하다.

# 얕은 복제 : 원본과 동일한 필드값을 가진 객체를 생성하되 참조 타입의 필드는 메모리 번지만을 공유 (예: 배열 등)

# 깊은 복제 : 참조 타입의 필드도 복제하여 새로 생성

(5) finalize

객체 소멸직전 자동으로 호출되는 메소드로 객체가 소멸되기전 실행해야 할 코드가 있을 경우 사용할 수 있지만,

자바의 경우 객체를 메모리에서 지우는 작업을 개발자가 작성하지 않고 가비지 컬렉터가 메모리 상태를 보고 알아서 제거 한다.

때문에 객체 소멸시점을 알 수 없는데 객체 소멸자를 사용하는 것은 부적절하다.

2. Objects 클래스

1) 객체 비교, 해시 코드 생성, 널(null) 여부 등을 수행하는 정적 메소드들로 구성된 유틸리티 클래스

 

Return Type Method Remarks
int compare(T a, T b, COmparator<T> c) 두 객체 a와 b를 Comparator를 사용해 비교
boolean deepEquals(Object a, Object b) 두 객체의 깊은 비교
boolean equals(Object a, Object b) 두 객체의 얕은 비교
int hash(Object... values) 매개값이 저장된 배열의 해시코드 생성
int hashCode(Object o) 객체의 해시코드 생성
boolean isNull(Object obj) 객체가 널 인지 여부
boolean nonNull(Object obj) 객체가 널이 아닌지 여부
T requireNonNull(T obj) 객체가 널인 경우 예외 발생
T requireNonNull(T obj, String massage) 객체가 널인 경우 예외 발생(주어진 메세지 포함)
T requireNonNull(T obj, Suppier<String> messageSupplier 객체가 널인 경우 예외 발생(람다식이 만든 메세지 포함)
String toString(Object o) 객체의 toString() 값을 반환
String toString(Object o, String nullDefault) 객체의 toString() 값을 반환하되 값이 null일 경우 지정된 메세지 반환

<표> Objects 클래스의 주요 정적 메소드

 

 

(1) hash

객체의 필드값들을 받아 해시코드를 생성하므로 해시코드 생성시에 사용된다.

Objects 클래스의 정적 메소드를 사용할 일이 hash를 빼고 있을지 의문임. 딱히..

3. String 클래스

1) 문자열을 저장하는 클래스로 가장 많이 사용되는 대표적인 클래스

 

Return Type Method Remarks
char charAt(int index) 문자열에서 지정한 인덱스 위치의 문자를 반환
boolean equals(Object anObject) 두 문자열을 비교 (Object 클래스의 equals를 재정의)
boolean contains(CharSequence s) 문자열에 지정한 문자열이 있는지 여부
boolean startWith(String prefix) 문자열의 시작을 지정한 문자열과 비교
boolean endsWith(String suffix) 문자열의 끝을 지정한 문자열과 비교
byte[] getBytes() 문자열을 바이트 배열로 반환
byte[] getBytes(Charset charset) 문자열을 주어진 문자셋으로 인코딩한 바이트 배열로 반환
int indexOf(String str) 문자열에서 지정한 문자열의 인덱스를 반환 없다면 -1을 반환
int length() 문자열의 길이를 반환 (공백 포함)
String concat(String str) 문자열에 입력한 문자열을 추가해 반환 +=과 같다.
String replace(CharSequence target, CharSequence replace) 문자열의 target부분을 replace로 대치한 문자열을 반환
String substring(int beginIndex) 지정한 인덱스부터 시작하는 문자열을 반환
String substring(int beginIndex, int endIndex) begin ~ end-1 인덱스의 문자열을 반환
String toLowerCase() 문자열의 알파벳 부분을 소문자로 변환해 반환
String toUpperCase() 문자열의 알파벳 부분을 대문자로 변환해 반환
String trim() 문자열의 앞 뒤 공백을 제거후 반환
String[] split(String regex) 지정한 구분자로 문자열을 분리해 배열로 반환
String valueOf( ... ) 정적 메소드로 기본타입 값을 문자열로 만들어 반환

<표> String 클래스의 주요 정적 메소드

 

 

(1) 문자셋

EUC-KR : 2350개의 한글 문자, 한국에서 통용되는 한자, 영문을 표현 (한글 2byte)

UTF-8 : 유니코드로 전 세계 모든 문자를 표현할 수 있는 인코딩 (한글 3byte)

(2) split

지정한 구분자를 이용해 문자열을 문자열 배열로 반환하게 되는데 구분자는 파이프를 이용해 여러개를 사용할 수 있다.

단, 물음표(?), 별(*), 더하기(+), 괄호( '(' , ')' ), 대괄호( '[' , ']' ), 중괄호( '{' , '}' ) 이러한 문자를 구분자로 사용할 경우

PatternSyntaxException이 발생 하게 된다. 하지만 이러한 문자도 이스케이프(\\) 처리를 통해서 사용할 수 있다.

 

public class SplitExample {

	public static void main(String[] args) {
		
		String str1 = "김,이,박,황";
		String str2 = "김,이1박-황";
		String str3 = "김?이[박(황";	
		
		String[] strArr1 = str1.split(",");
		String[] strArr2 = str2.split(",|1|-");
		String[] strArr3 = str3.split("\\?|\\[|\\(");
		
		for (String s : strArr1)
			System.out.print(s+" ");
		System.out.println();
		for (String s : strArr2)
			System.out.print(s+" ");
		System.out.println();
		for (String s : strArr3)
			System.out.print(s+" ");		
	}
}

// 실행결과 //
----------------------------------------------------
김 이 박 황 
김 이 박 황 
김 이 박 황 

'Java > Java Basic' 카테고리의 다른 글

IO 패키지 입출력 (Input & Output Stream)  (0) 2019.09.10
제네릭 (Generic)  (0) 2019.09.04
스트림 최종 처리  (0) 2019.09.04
스트림 중간 처리  (0) 2019.09.04
스트림 (Stream)  (0) 2019.09.04
Comments