> API
JAVA API(Application Programming Interface)
API는 라이브러리라고 부르며 프로그램 개발에 자주 사용되는 클래스/인터페이스의 모음을 말함
자바 표준 API 문서 주소 : https://docs.oracle.com/javase/8/docs/api
Java Platform SE 8
docs.oracle.com
> java.lang 패키지
자바 프로그램의 기본적인 클래스들을 담고있는 패키지
java.lang 패키지에 있는 클래스/인터페이스는 import 없이 사용 가능
주요 클래스
1. Object
자바의 최상위 클래스
따로 특정 클래스를 상속하지 않으면 모든 클래스는 자동으로 Object 클래스를 상속하게 됨
따라서 Object의 메소드는 모든 클래스에서 사용 가능
2. System
데이터를 표준 입력장치(키보드)로부터 입력받거나 표준 출력장치(모니터)로 출력하기 위해 사용
프로그램 종료, 키보드로 입력, 모니터로 출력, 메모리 정리, 현재 시간 읽기 등 가능
System 클래스의 모든 멤버는 static → 클래스이름으로 바로 접근 가능
-System 클래스의 주요 메소드-
1) exit(): 현재 실행하고 있는 프로세스를 강제 종료시킴. 매개값은 정상 종료일 경우 0, 비정상 종료일 경우 0이외 다른값을 줌.
2) currentTimeMillis(): 컴퓨터 시계에서 현재 시간을 읽어서 밀리세컨드/나노세컨드단위의 long값을 리턴. 주로 프로그램의 실행 소요 시간 측정으로 성능을 테스트할 때 사용.
3) getProperty(): JVM이 시작할 때 자동 설정되는 시스템의 속성값을 구함
4) gc(): Garbage Collector 를 실행시킴
3. Class
클래스를 메모리에 로딩할 때 사용
4. String
문자열을 저장하고 문자열의 여러가지 정보를 얻을 때 사용
생성자를 사용해서 객체를 만들 필요 없이 기초 데이터를 사용할 때처럼 바로 초기화해서 사용 가능
-String 클래스의 주요 메소드-
1) charAt(): 특정 인덱스의 글자를 반환
2) indexOf(): 특정 문자열의 시작 인덱스 값을 반환 (만약 주어진 문자열이 포함되어 있지 않으면 -1 리턴)
3) length(): 문자열의 길이를 알려줌
4) replace(): 특정 문자열을 변경
5) substring(): 인덱스를 기준으로 그 앞의 문자열을 잘라줌 / 만약 매개값으로 인덱스를 2개 주면 처음 매개값 이상 두번째 매개값 미만의 문자열을 제외한 나머지 삭제
6) toUpperCase(): 문자열을 대문자로 치환
7) toLowerCase(): 문자열을 소문자로 치환
8) trim(): 문자열 앞/뒤 공백을 제거
9) equals(): 문자열 값을 비교
10) valueOf(): 기본 데이터타입의 값들을 문자열로 변환
11) split(): 특정 문자열 기준으로 잘라서 배열에 반환
5. StringBuffer, StringBuilder
문자열을 저장하고 내부 문자열을 조작할 때 사용
String 클래스는 객체가 처음 초기화된 데이터에서 변화가 생기면 객체를 재활용하지 않고 새로운 객체를 생성하며 메모리를 과소비하는 단점이 있는데, StringBuilder는 이러한 String 클래스의 단점을 보완한 속도가 개선된 클래스
-StringBuilder 클래스의 주요 메소드-
1) append(): 기존 문자열 뒤에 문자열 추가
2) insert(): 특정 위치에 문자열 추가
3) delete(): 문자열 삭제
4) deleteCharAt(): 특정 인덱스의 문자 하나를 삭제
5) replace(): 문자열 일부분을 다른 문자열로 대체
6) setCharAt(): 주어진 인덱스의 문자를 다른 문자로 대체
7) toString(): StringBuilder 객체의 값을 문자열로 반환
8) reverse(): 문자열을 거꾸로 뒤집음
//String
long start, end;
start = System.currentTimeMillis();
String str = "A";
for(int i = 0; i < 300000; i++) {
str = str + "A";
}
end = System.currentTimeMillis();
System.out.println("String: " + (end-start)*0.001 + "초");
//StringBuilder
start = System.currentTimeMillis();
StringBuilder sb = new StringBuilder("A"); //객체생성
for(int i = 0; i < 300000; i++) {
sb.append("A"); //append사용
}
end = System.currentTimeMillis();
System.out.println("StringBuilder: " + (end-start)*0.001 + "초");
//String: 34.961초
//StringBuilder: 0.005초
6. Math
수학 함수를 이용할 때 사용
수학계산에 사용할 수 있는 메소드를 제공
Math 클래스의 메소드는 모두 static → 클래스이름으로 바로 접근 가능
-Math 클래스의 주요 메소드-
1) abs(): 절댓값을 구함
2) ceil(): 올림값을 구함
3) floor(): 내림값을 구함
4) max(): 수를 비교하여 최댓값을 구함
5) min(): 수를 비교하여 최솟값을 구함
6) random(): 랜덤값을 구함 (0.0이상 1.0미만)
7) rint(): 현재 수에서 가까운 정수를 실수 형태로 구함
8) round(): 반올림값을 구함
7. Wrapper(Byte, Short, Integer, Long, Float, Double, Boolean, Character)
기본 데이터 타입의 객체를 만들 때 사용
이러한 객체는 기본 타입의 값을 객체 내부에 두고 포장하기 때문에 포장(Wrapper) 객체라고 함
포장하고 있는 기본 타입의 값을 외부에서 변경할 수 없으며, 변경하려면 새로운 포장 객체를 생성해야 함
다양한 Wrapper 클래스: Byte, Short, Integer, Long, Float, Double, Boolean, Character
*Wrapper 의 두가지 의미
박싱 boxing: 기본 타입 값 → 포장 객체 / 언박싱 unboxing: 포장 객체 → 기본 타입 값
문자열 → 기본 타입 값으로 변환할 때에도 사용됨 - "parse + 기본타입" 으로 정의된 static 메소드 제공
> java.util 패키지
자바 프로그램 개발에 보조 역할을 하는 클래스들을 (주로 컬렉션 관련 클래스) 담고있음
주요 클래스
1. Arrays: 배열을 조작할 때 사용
배열 조작(배열 복사, 항목 정렬, 항목 검색 등) 기능을 가지고 있음
Arrays 클래스의 모든 메소드는 static → 클래스 이름으로 바로 접근 가능
-Arrays 클래스의 주요 메소드-
1) binarySearch(배열, 찾는 값): 전체 배열 항목에서 찾는 값이 있는 인덱스 반환
2) copyOf(원본 배열, 복사할 길이): 원본 배열의 인덱스 0~복사할 길이만큼 복사한 배열 반환
3) copyOfRange(원본 배열, 시작 인덱스, 끝 인덱스): 원본 배열의 시작 인덱스~끝 인덱스 복사한 배열 반환 (시작 인덱스 포함, 끝 인덱스 미포함)
4) sort(배열): 배열의 전체 항목 오름차순으로 정렬
5) toString(배열): 배열의 값들을 "[값1, 값2, ...]"와 같은 문자열 형식으로 반환
double[] arr = {1.1, 2.2, 3.3, 4.4, 5.5};
double[] arCpy1 = Arrays.copyOf(arr, arr.length); //copyOf
double[] arCpy2 = Arrays.copyOf(arr, 3);
System.out.println(Arrays.toString(arCpy1));
System.out.println(Arrays.toString(arCpy2));
//[1.1, 2.2, 3.3, 4.4, 5.5]
//[1.1, 2.2, 3.3]
int[] arr = {3, 1, 2, 5, 4};
int[] arr2 = Arrays.copyOf(arr, arr.length); //copyOf 배열 복사
Arrays.sort(arr2); //sort 오름차순 정렬
int index = Arrays.binarySearch(arr2, 5); //binarySearch 값이 있는 인덱스 리턴
System.out.println("5가 있는 인덱스번호: " + index);
System.out.println(Arrays.toString(arr2)); //toString 배열을 문자열로 리턴
if(Arrays.equals(arr, arr2)) { //equals 배열 비교
System.out.println("배열의 각 항목이 모두 일치함");
}else {
System.out.println("배열의 각 항목이 일치하지 않음");
}
2. Date: 날짜와 시간 정보를 저장하는 클래스
주로 객체 간 날짜 정보를 주고받을 때 사용
Date 객체를 기본생성자로 생성하면 컴퓨터의 현재 날짜를 읽어 객체로 만듦
Date 클래스의 toString() 메소드는 영문날짜를 문자열로 리턴 (만약 특정 문자열 형식으로 얻고싶다면 ↓)
*SimpleDateFormat 클래스
java.text 패키지의 클래스(API)
날짜를 원하는 형식으로 표현하기 위한 클래스
패턴을 사용하여 생성자의 매개값으로 표현형식 지정하여 객체 생성 → format() 매소드 호출하여 패턴이 적용된 문자열 얻음
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateEx {
public static void main(String[] args) {
Date date = new Date(); //Date 객체생성
System.out.println(date.toString()); //Wed Sep 22 00:14:48 KST 2021
//SimpleDateFormat을 사용하여 날짜를 원하는 형태로 얻음
SimpleDateFormat sdf = new SimpleDateFormat("yyyy년 MM월 dd일 HH시 mm분 ss초"); //객체생성
String time = sdf.format(date); //format 메소드에 매개변수 값으로 date 전달
System.out.println(time); //2021년 09월 22일 00시 14분 48초
sdf = new SimpleDateFormat("yy-MM-dd a hh:mm:ss"); //객체생성
System.out.println(sdf.format(date)); //21-09-22 오전 12:14:28
sdf = new SimpleDateFormat("오늘은 E요일입니다. 오늘은 1년 중 D번째 날입니다.");
System.out.println(sdf.format(date)); //오늘은 수요일입니다. 오늘은 1년 중 265번째 날입니다.
}
}
3. Calendar: 운영체제의 날짜와 시간을 얻을 때 사용
4. Random: 무작위 숫자를 얻을 때 사용
무작위 숫자를 얻어내기 위한 다양한 메소드 제공
Math 클래스의 random() 메소드보다 더 다양한 무작위 값을 얻을 수 있음
-Random 클래스의 주요 메소드-
1) nextBoolean(): boolean 타입 무작위 값을 리턴 (true/false)
2) nextDouble(): double 타입 무작위 값을 리턴 (0.0 이상 1.0 미만)
3) nextInt(): int 타입 무작위 값을 리턴 (int 범위)
4) nextInt(int n): int 타입 무작위 값을 리턴 (0 이상 n 미만)
Random r = new Random(); //객체생성
int i = r.nextInt(10); //정수 0이상 10미만 랜덤값
System.out.println(i);
int i = r.nextInt(10) + 1; //정수 1이상 11미만(10이하) 랜덤값
System.out.println(i);
'course 2021 > JAVA' 카테고리의 다른 글
day20 - API(3) stream (0) | 2021.09.26 |
---|---|
day19 - API(2) generic, collection (0) | 2021.09.22 |
day17 - exception (0) | 2021.09.11 |
day16 - interface (0) | 2021.09.08 |
day15 - final, abstract (0) | 2021.09.08 |