Reference 문서

<https://docs.oracle.com/en/java/javase/21/docs/api/index.html>

Package

- 클래스내에서 사용하는 다른 클래스는 같은 패키지 내에서 찾음
- java.lang에 있는 클래스들은 기본 제공되어서 import를 사용하지 않고 사용 가능
- 다른 패키지에 있는 클래스를 사용하려면 import 구문 사용
- import 사용하려는 클래스의 풀패키지명을 명시
- import 패키지명.클래스명
- import 패키지명.*

1. java.lang Package

1. java.lang.Object
	- 모든 클래스의 부모(super)
	- 모든 클래스는 Object 클래스를 상속(확장) 함
	- extends 코드가 없는 클래스는 extends Object가 자동으로 입력
	- 모든 클래스는 Object 타입이다

	주요 메서드
	1) equals   : 자기자신의 참조변수의 값과 매개변수로 받은 참조변수의 값이 같은지 판별
	2) toString : 객체의 주소를 문자열로 반환(클래스명@주소)
							: 참조변수를 출력시도하면 자동으로 toString 호출

  - 주요 메서드들을 필요하다면 오버라이딩 해서 사용

2. java.lang.String
	- 문자열, 문자배열
	- 문자열을 변형, 문자열 중 일부분의 데이터 추출 등

	주요 메서드 
	1) charAt(int index)     : 문자열에서 해당 인덱스 번호의 문자(char)를 반환
	2) indexOf(int ch)       : 제공하는 문자 또는 문자열의 인덱스 번호를 반환
														 없으면 -1 반환
														 찾는 순서는 앞에서부터 뒤로 
     indexOf(int ch, int fromIndex) : fromIndex 번호 부터 찾기

	3) lastIndexOf()           : indexOf와 같지만 찾는 순서가 뒤에서 부터 앞으로

	4) length()               : 문자열의 길이를 반환

	5) isEmpty()               : 문자열의 길이가 0이면 true, 아니면 false 리턴

	6) equals()                : 문자열이 서로 같은지 비교(Overring)

	7) replace()               : 문자 또는 문자열을 변환 하고 리턴

	8) subString()             : 문자열에서 원하는 부분만 잘라 낼 때
			- beginIndex           : 시작인덱스번호 이상 끝까지
			- beginIndex, fromIndex : 시작 인덱스 번호 이상 fromIndex 미만 까지 
	9) split()                  : 특정 기준으로 문자열을 분리 할 때

	10) toCharArray()           : 문자열을 문자배열로 반환

	11) toLowerCase()           : 문자열을 모두 소문자로 바꿔서 반환

	12) toUpperCase()           : 문자열을 모두 대문자로 바꿔서 반환

	13) trim()                  : 문자열의 앞뒤 공백(space)를 모두 제거하고 반환

	14) valueOf()               : 다른 데이터타입들을 String으로 변경하고 반환
	    - primitive 타입을 문자열로 변경
				a. valueOf() 메서드 사용
				b. 연결연산자 사용 : String + primitive ex) "abc"+10

3. java.lang.StringBuffer
	- 여러개의 문자열을 연결해서 하나의 문자열로 만들 때
	- "abc" "def" -> "abc"+"def"
	- String은 불변
	- StringBuffer는 String이 아님
	- StringBuffer의 결과물을 String에 대입할 때 toString 메서드 이용

4. Wrapper class
	- 대명사
	- 감싼다라는 의미
	- primitive type을 reference type으로 변경
	- 형변환 X, 다형성

	char       ->        Character
  byte       ->        Byte
  short      ->        Short
  int        ->        Integer
  long       ->        Long
  float      ->        Float
  double     ->        Double
  boolean    ->        Boolean

* 클래스명.parse클래스명("문자열") : 문자열을 primitive type으로 변경

primitive -> reference        : Auto Boxing
int n1=10;
Integer n2 = n1;

reference -> primitive        : Auto UnBoxing
n1 = n2;

* auto는 같은 계열만 가능 : int <-> Integer, long <-> Long...

5. java.lang.Math
	- 수학에 관련된 메서드
	- 클래스 변수와 클래스 메서드로 구성

2. java.util Package

1. java.util.StringTokenizer
	- 하나의 문자열을 여러개로 분리 (파싱, parsing, String의 split 메서드)
	- 분리된 문자열을 토큰(Token)이라 함
	- 생성자 매개변수
			1) 분리 할  문자열
			2) 분리 기준(delim)

	- new StringTokenizer("자를문자열", "자를 기준")
	- hasMoreTokens
	- nextToken

2. Collection Framework

- 주요 인터페이스
1) java.util.List
	- 순서가 유지
	- 값의 중복을 허용
	- 배열 기반(index 사용)

	- add(Object e)            : 새로운 데이터를 마지막 부분에 추가
	- add(int index, Object e) : index번호에 데이터를 삽입
	- get(int index)           : index번호의 element(요소)를 리턴
	- size()                   : 요소의 갯수를 리턴(배열의 length)
	- remove(int index)        : index 번호의 요소를 삭제
	- clear()                  : 모든 요소를 삭제
	- set(int index, Object e) : index 번호의 요소를 e로 수정
	
	- ArrayList, LinkedList,... 

2) java.util.Set
	- 순서가 유지 X
	- 값의 중복을 허용 X
	- get X

	- List 와 비슷한 메서드(add. remove, clear...)
	//Set의 Data들을 Iterator 형식으로 변경
	- iterator()

	- HashSet

3) java.util.Map
	- Key와 Value로 구성
	- 순서가 유지 X
	- Key 중복 X, Value 중복 허용

	- put(K, V)        : Key로 Value를 추가, Key가 중복이면 수정의 의미
	- get(K)           : Key로 Value를 반환
	- clear()          : 전체 요소 삭제
	- remove(K)        : 일치하는 Key 의 value 삭제
	- remove(K, V)     : Key와 Value 둘다 일치해야 삭제
	- containsKey(K)   : Key가 Map에 있으면 true, 없으면 false
	- containsValue(V) : Value가 Map에 있으면 true, 없으면 false 
	- keySet()         : Key를 Set 인터페이스 타입으로 변경 

	- HashMap

4) Iterator(Enumeration)
	- 반복형
		Iterator<Integer> it = hashSet.iterator();
		
		while(it.hasNext()) {
			Integer num = it.next();
			System.out.println(num);
		}

3. Generic <>
	- 데이터타입의 안정성을 보장
	- 타입의 변경이나 검사등에 노력을 줄임
	- 클래스나 메서드 등 에서 사용할 내부 데이터타입을 컴파일시 미리 지정하는 방법

4. java.util.Random
	- 랜덤한 수를 반환

	- netxtDouble, nextFloat : 0.0 ~ 1.0 미만의 실수를 반환
	- nextInt, nextLong      : 표현 할 수 있는 범위 내의 정수를 반환
	- nextInt(int b)         : 0 이상 b미만의 정수를 반환

5. java.util.Calendar
	- 날짜, 시간을 다룰 때 사용
	- Calendar ca = Calendar.getInstance();

	- get(int field)            : 각 변수에 맞는 시간이나 날짜를 반환
												   	  : 0 -> 1월, 1->2월, ... 11 -> 12월 	
	- getTimeInMillis()         : 현재 시간을 밀리세컨즈로 반환

	- set(int field, int v)     : 각 변수에 해당하는 값으로 설정
	- setTimeInMillis(long mil) : 밀리세컨즈를 시간으로 변경

	- getTime()                 : 현재 시간을 을 Date 객체로 반환

	- roll(int field, int amount) : 해당 필드에 amount 만큼 흐르게함, 다른 필드에 영향 X
	- add(int field, int amount)  : 해당 필드에 amount 만큼 흐르게함, 다른 필드에 영향 Oㄴㅇ.
	
	*** LocalDateTime으로  변경 가능
	
6. java.util.UUID
	- 중복 되지 않는 문자열 생성
	- Universal Unique ID
	
	UUID.randomUUID().toString()

3. java.text

1. java.text.SimpleDateFormat
	- format(Date date)            : Date를 패턴에 맞는 문자열로 변환하고 return
	- applyPattern(String pattern) : 패턴을 변경
	- toPattern()                  : 현재 패턴을 출력

4. IO(Input, Output)

- 기준 : 현재 프로그램 기준
- Stream : 양방향 통신시 2개의 Stream 필요
	1) 입력 Stream
	2) 출력 Stream

Byte 단위 처리

1. java.io.InputStream
	- byte 단위 처리
	int read()     : 입력 스트림으로부터 다음 Byte를 읽음
	int read(byte [] b) : 입력 스트림으로부터 b 크기만큼  Byte를 읽음
	- 읽을 byte가 없으면 -1 리턴

2. java.io.OutputStream
	- byte 단위 처리
	void write(int b)     : 출력스트림으로 b를 byte로 출력
	void write(int [] b)  : 출력스트림으로 b배열을 byte로 출력

문자 단위 처리

1. java.io.Reader
2. java.io.Writer

보조 스트림
- BufferedRead
- BufferedWriter