2024. 11. 19. 13:14ㆍ코딩테스트/Java
라이브러리
Java에서는 우리가 원하는 모든것은 객체 즉,class단위로 작성하여 프로그램을 작성한다.
우리가 작성하는 class외에 Java에서는 미리 자주사용되고 유용한 기능을 하는 class들을 만들어 놓고 제공을한다.
이때 이 class들을 관련된 기능별로 분류하여 pakage 단위로 묶어서 관리하는데 이 pakage 파일을 라이브러리라고 한다.
예: java.util.Arrays -> java.util[패키지].Arrays[클래스].sort()[메서드]
자바 어플리케이션을 만든다는 것은
결과적으로 자바에서 제공하는 패키지들을 부품으로 조립해서 사용자 정의 로직을 만드는 과정이라고 할 수 있다.
java.lang
자바 프로그래밍을 위한 가장 기본적인 패키지와 클래스를 포함하고 있다.
1. java.lang.Object
모든 클래스의 최고 조상
2. java.lang.String
- charAt() : String객체의 n번째 문자 값을 반환
- equals(Object anObject) : 문자열 같은지 비교
- length() : 문자열 길이 반환
- indexOf(int ch) : 문자의 위치 반환
indexOf(String str) : 해당 문자열의 시작 위치, 해당 문자열 없으면 -1을 리턴
- lastIndexOf(int ch) : 뒤에서부터 지정 문자 위치 인덱스 번호 찾기
- substring(시작x, 끝y) : 특정 위치의 문자부터 반환 (x이상~y미만), 끝 생략할 경우 끝까지
- split() : 매개변수로 들어온 문자열을 기준으로 문자열을 분리하여 String 리턴
- replace(char old, char new) : 문자열에서 하나의 문자를 다른 문자로 바꿀 때 사용, String[] 리턴
- toLowerCase(), toUpperCase() : 소문자, 대문자로 바꾸어 String 리턴
- trim() : 문자열 앞, 뒤 공백을 제거 (단, 문자열 사이 공백은 제거 안 됨)
- valueof() : 문자열형식으로 바꾸어 리턴
- startsWith(문자열) : 문자열이 파라미터로 들어온 문자열로 시작되는지 확인하고 boolean 리턴
- endsWith(문자열) : 문자열이 파라미터로 들어온 문자열로 끝나는지 확인하고 boolean 리턴
3. java.lang.StringBuffer
- append() : 문자열 뒤에 문자열을 추가할 수 있는 메서드
- delete(int x, int y) : x이상 y미만의 문자를 지운다. 원본 값도 변경됨
deleteCharAt(int x) : x에 있는 문자 지움
- insert(int x, String str) : x 위치에 str 문자열 삽입
- reverse() : 문자열의 순서를 역순으로 바꾸어줌
4. java.lang.Math
- Math.random(): 0.0이상~1.0미만의 랜덤한 숫자 생성
- Math.floor(): 내림하기
- Math.ceil(): 올림하기
- Math.round(): 반올림하기
- Math.abs(): 절대값
5. java.lang.Wrapper
- Primitive Type을 Reference Type으로 사용
byte -> Byte
short -> Short
int -> Integer
long -> Long
float -> Float
double -> Double
char -> Character
boolean -> Boolean
- autoBoxing, autoUnBoxing 개념
- parseInt(): 문자열을 숫자로 바꾸는 메서드
Integer.parseInt("20");
Double.parseDouble("2.22");
6. java.lang.Integer
1) 2진수 관련
- Integer.bitCount(int num) : 숫자 num을 binary로 변환후, 1의 수를 반환
- Integer.toBinaryString(int num) : 숫자 num을 2진수로 변환해서 반환 (String)
- Integer.parseInt(String s, int n진수); 2진수 String을 n진수로 변환해서 반환 (int)
2) Integer.compare(값1, 값2)
- 기준 값과 비교대상이 동일한 값일 경우 0
- 기준 값이 비교대상 보다 작은 경우 -1
- 기준 값이 비교대상 보다 큰 경우 1
java.util
프로그램을 제어하기 위한 클래스와 데이터를 효율적으로 저장하기 위한 클래스들을 담고 있다.
1. java.util.Random
- nextInt(): 가능한 모든 int 값(양수와 음수)에 걸친 범위의 난수를 반환한다.
- nextInt(int num): 0 부터 num-1까지 범위에 있는 난수를 반환한다.
2. java.util.StringTokenizer
- 문자열 파싱, Token이란 파싱한 결과물
- StringTokenizer은 클래스이므로 객체를 생성하고 사용
StringTokenizer str = new StringTokenizer([문자열],"구분자");
- 구분자를 생략하면 공백이 기본 구분자, 지정한 한가지 구분자로만 문자열을 나눌 수 있음
- 구분자들 중간의 공백은 무시 됨 (moon,sun, ,star => 공백무시), split은 공백도 처리함
- 객체이므로 메소드 사용가능해서 편리함
> countTokens() : 남아있는 토큰수 int 반환
> hasMoreTokens() : 토큰 남아있는지 여부 boolean 반환
> nextToken() : 토큰 String 반환
3. java.util.Collection
- 여러개의 Data를 하나의 변수로 다룰 수 있게 하는 API
- 배열: 같은 데이터타입만, 생성시 크기 지정, 한번 생성된 배열은 크기 수정이 불가능
- Collection의 주요 인터페이스 3가지
1) List
- 순서가 유지되고 데이터의 중복 허용
- 구현된 클래스: ArrayList, LinkedList, Vector, Stack, Queue..
2) Set
- 순서가 유지되지 않고, 데이터의 중복을 허용하지 않음
- 구현된 클래스: HashSet, TreeSet..
3) Map
- 키(key)와 값(value) 쌍으로 이루어진 데이터 집합
- 순서가 유지되지 않음
- 키는 중복을 허용하지 않고, 값의 중복은 허용함
- 이미 있는 키면 값을 수정
- 구현된 클래스: HashMap, TreeMaps, HashTable, Properties..
- Collection의 메서드
> boolean add() : 새로운 요소를 끝에 추가
> void clean() : Collection의 모든 요소를 삭제
> boolean remove(Object) : 해당 객체의 요소를 삭제
> boolean contains(Object) : 해당 객체를 포함하고 있는지 확인
> boolean isEmpty() : 해당 Collection이 비어있는지 확인
> int size() : 요소의 갯수 반환
> Object[] toArray() : 컬렉션을 Object배열로 변환
> Iterator<E> iterator() : 해당 Collection을 반복자(iterator)로 변환
*List, Set구현한 모든 클래스에서 사용 가능
*boolean hasNext() : 다음 요소가 있으면 true, 없으면 false
*E ar.next() : 다음 요소를 반환
*but, iterator사용하는 것 보다 향상된 for문 쓰는 것을 권장
3-1. Generic
- 타입을 제한(일반환)하는 것을 의미
- 객체의 타입 안정성을 높일 수 있다
- 리턴타입에 대한 형변환 안해도 됨
- <>안에는 참조형을 선언해줘야 한다
3-2. List
ArrayList<e> cfAryList = new ArrayList<e>();
- add(E) : 요소 추가
- add(index, E): 해당 인덱스 번호에 요소를 추가 (잘 안씀)
- set(index, E): 해당 인덱스 번호의 요소를 수정
- get(index) : 해당 인덱스 번호의 요소를 리턴
- size() : 요소의 갯수 반환
- clear() : 모든 요소를 삭제
- remove(index): 해당 인덱스 번호의 요소를 삭제
3-3. Map
- void clear() : Map의 모든 것 제거
- boolean containKey(Object key) : 매개변수 key가 해당 맵에 존재하는지 여부를 반환
- boolean containValue(Object value) : 매개변수 value가 해당 맵에 존재하는지 여부를 반환
- V get(Object key) : 해당 key로 value를 반환, 없으면 null반환
- V put(Key, Value) : key로 value를 저장
- Set<k> keySet() : 맵의 key값들을 Set객체로 변환 (import java.util.Set)
- V remove(Object Key) : 해당 key로 Value를 삭제하는 것
- int size() : 맵의 총 갯수 반환
4. java.util.Calendar
- 날짜나 시간을 다룰 때 사용
- get(field) : Calendar 변수에 저장된 값을 반환
- getTimeinMillis() : 1월 1일부터 현재까지의 시간을 millseconds로 표현 (차이 구할 때 주로 사용)
- set(field, 값) : 특정 시간이나 날짜로 변경 할 때 사용
- set(year, month, date) : Sets the values for the calendar fields YEAR, MONTH, and DAY_OF_MONTH.
- setTime(Date): Date, long타입의 변수를 Calendar객체로 변환해줌
- boolean after(Object cal) : 현재 객체가 매개변수로 온 객체가 나타내는 시간보다 나중인지 판단
- boolean before(Object cal) : 현재 객체가 매개변수로 온 객체가 나타내는 시간보다 먼저인지 판단
- roll (field, amount) : 해당 필드에서 특정 시간을 흐르게 하는 것, 다른 필드에 영향을 주지 않음
- add (field, amount) : 해당 필드에서 특정 시간을 흐르게 하는 것, 다른 필드에 영향을 줌
5. java.util.Arrays
- Arrays.sort(배열명) : 배열 정렬
- Arrays.copyOfRange(원본 배열명, 복사할 시작인덱스, 복사할 끝인덱스): 시작인덱스 ~ 끝 인덱스 '이전'까지 복사됨
- Arrays.asList(배열명): 일반 배열을 ArrayList로 변환
Arrats.asList(배열명).indexOf(배열에서 찾을 객체): 리스트의 앞쪽부터 인자와 동일한 객체가 있는지 찾으며, 존재한다면 그 인덱스를 리턴합니다. 존재하지 않는다면 -1을 리턴