API란?
자바 API(Application Programming Interface)는 자바에서 개발자들을 위해 기본적으로 제공하는 클래스이다.
예를 들어 출력을 위해 사용했던 System.out.println()
메서드도 java.lang
패키지가 기본적을 제공되기 때문에 사용할 수 있었던 일종의 API
이다. 자바에서 제공하는 API
를 확인하고 싶다면 http://docs.oracle.com/javase/8/docs/api/index.html 사이트에 접속해서 API문서를 확인한다.
문자열 클래스는 문자열에 대한 처리를 위한 다양한 메서드가 정의되어 있는 클래스이다.
Java에서는 String
클래스를 통해 문자열에 대한 처리를 제공한다. 다양한 메서드들이 제공되기 때문에 Java는 문자열을 다루기에 상당히 편리한 언어이다.
String a = new String("Java");
String
인스턴스를 생성할 때는 다른 객체의 생성과 마찬가지로 new 키워드로 메모리의 빈 공간을 확보하고 인스턴스를 생성해야한다. 하지만 보통의 클래스와는 다르게 문자열은 프로그래밍을 할 때 자주 사용되므로 작업을 더 쉽게 하기 위해 기본 자료형을 선언하는 것처럼 사용하는 것도 허용한다.
String a = "Java";
//기본 자료형처럼 사용
메서드 | 의미 |
---|---|
concat(문자열) | 문자열을 연결한다. |
substring(인덱스,잘라낼 길이) | 문자열을 잘라낸다. |
length() | 문자열의 길이를 반환한다. |
toUpperCase() | 문자열을 대문자로 변경한다. |
toLowerCase() | 문자열을 소문자로 변경한다. |
charAt(인덱스) | 인덱스에 해당하는 글자를 반환한다. |
indexOf(문자열) | 문자열의 위치를 반환한다. |
equals(문자열) | 문자열이 같은지 boolean값으로 반환한다. |
trim() | 문자열 앞,뒤에 있는 공백을 제거한다. |
replace(바꾸고 싶은 문자열, 바꿀 문자열) | 문자열 내의 특정 부분을 다른 문자열로 변경한다. |
replaceAll(변환할 문자열,변환될 문자열) | 문자열 내의 특정 부분을 다른 문자열로 변경한다. |
Java에서는 시간에 대해 처리를 할 수 있도록 몇 가지 클래스를 제공한다. Java에서 시간을 다루는 자료형의 값은
long
이며java.util.Calendar
클래스와java.util.Date
클래스가 있다.
system
클래스의 currentTimeMills()
메서드는 현재 운영체제의 시각을 long
타입으로 반환한다. 반환하는 시각은 1970년 1월 1일을 기준으로 했을 때 현재까지의 시간이며 1/1000초 단위까지 환산해서 보여준다.
public class Date1 {
public static void main(String[] args) {
long start = System.currentTimeMillis();
System.out.println("시작시간 : " + start);
int a = 0;
for(int i = 1; i < 100000000; i++) {
a++;
}
long end = System.currentTimeMillis();
System.out.println("종료시간 : " + end);
System.out.println("걸린 작업 시간 : " + (end-start));
}
}
/*
실행 결과
시작시간 : 1649494054083
종료시간 : 1649494054086
걸린 작업 시간 : 3
*/
Java에서는 날짜를 다루기 위한 Calendar
클래스를 제공한다. 다만 Calendar
는 추상 클래스이기 때문에 직접 인스턴스를 생성하지는 못하고 getInstance()
메서드를 통해서 GregorianCalendar
인스턴스를 생성해야 한다. 이방법을 싱글턴 패턴(Singleton Pattern)이라고 한다. 싱글턴 패턴은 객체를 사용할 때 각각 인스턴스를 생성해서 사용 하는 것이 아니라 하나의 인스턴스만을 가지고 사용하는 방법이다. Calendar
클래스는 싱글턴으로 만들어진 대표적인 클래스이다. 싱글턴 패턴을 사용하지 않는 방법으로는 직접 GregorianCalendar
인스턴스를 생성하는 방법이 있다.
public class Date1 {
public static void main(String[] args) {
Calendar a = Calendar.getInstance();
Calendar b = new GregorianCalendar();
System.out.println(a.toString());
System.out.println(b.toString());
}
}
Calendar
클래스에서 데이터를 얻어오려면 get()
메서드를 사용한다. get()
메서드의 반환타입은 int
이며 한 가지 주의할 것은 월(MONTH) 반환 시 실제 월보다 1이 작은 값이 반환된다.(1월 => 0월, 12월 => 11월) 또한 반환타입이 int
이므로 요일을 반환할 때도 정수의 형태로 반환하는데 일요일이 시작인 1이고 월요일이 2 그리고 토요일이 7이다.
public class Date1 {
public static void main(String[] args) {
Calendar a = Calendar.getInstance();
int year = a.get(Calendar.YEAR);
int month = a.get(Calendar.MONTH);
int date = a.get(Calendar.DATE);
System.out.println(year + "년" + month + "월" + date + "일");
System.out.println(a.get(Calendar.DAY_OF_WEEK));
System.out.print("이번 년도에서 오늘이 몇 일째인가? : ");
System.out.println(a.get(Calendar.DAY_OF_YEAR));
System.out.print("이번 달은 며칠까지 있는가? : ");
System.out.println(a.getActualMaximum(Calendar.DATE));
}
}
/*
2022년3월9일
7
이번 년도에서 오늘이 몇 일째인가? : 99
이번 달은 며칠까지 있는가? : 30
*/
set()
메서드는 Calendar
인스턴스의 값을 변경할 때 사용한다. 두 개의 파라미터를 필요로 하며 첫 번째 파라미터는 바꿔야 할 항목, 두 번째 파라미터는 바꿀 값을 대입한다.
set(바꿔야할 항목, 바꿀 값);
set(년, 월, 일);
Random
클래스는 무작위의 값을 얻고 싶을 때 사용한다.
Random
클래스는 무작위의 값을 추출하기 위한 내부의 알고리즘을 가지고 있다. 이 알고리즘에는 종자 값이라는 수가 이용되는데 이 종자 값에 따라 값을 반환하게 된다. 만약 기본 생성자로 Random
인스턴스를 생성하면 현재의 시간 currentTimeMillis()
를 종자 값으로 하여 무작위의 값을 추출한다.
Random
인스턴스의 값을 받아오는 메서드는 다음과 같다.
int
값 반환int
값을 반환boolean
값 반환long
값 반환double
값 반환import java.util.Random;
public class Date1 {
public static void main(String[] args) {
Random random = new Random();
Random random2 = new Random();
Random random3 = new Random();
for(int i = 0; i < 5; i++) {
System.out.println("기본 생성자 : "+ random.nextInt());
}
for(int i = 0; i < 5; i++) {
System.out.println("random2 : " + i + "번째 값" + random2.nextInt());
}
System.out.println("");
for(int i = 0; i < 5; i++) {
System.out.println("random3 : " + i + "번째 값" + random3.nextInt());
}
}
}
/*
기본 생성자 : -1442629362
기본 생성자 : 833486601
기본 생성자 : 762877079
기본 생성자 : -925352965
기본 생성자 : -964256892
random2 : 0번째 값580608899
random2 : 1번째 값444657732
random2 : 2번째 값199694394
random2 : 3번째 값2010712326
random2 : 4번째 값-2074125173
random3 : 0번째 값-956079021
random3 : 1번째 값1167424861
random3 : 2번째 값1710274122
random3 : 3번째 값-265286028
random3 : 4번째 값634602538
*/