1. 자바 API?
자바 API란 더 편리하고 효율적인 자바 프로그래밍을 위한 도구이다. 자바 API는 자바 내부에 class로 내장되어있다.
자바 API는 패키지 안에 담겨서 제공된다. 패키지는 같은 계열의 코드를 묶어서 관리하거나, 같은 이름의 코드를 분류하는 역할을 한다. 예를들어 package music이라는 패키지로 Song.java, Artist.java라는 코드를 묶어서 관리할 수 있고, apple.java라는 같은 이름의 코드를 package it, package fruits라는 다른 패키지로 분류할 수 있다.
자바 API를 사용하기 위해서는 import 키워드를 통해 자바API와 그것이 속한 패키지를 불러와야한다.
예시 코드 1
import java.lang.Math;
import java.util.Random;
public class RandomTest {
public static void main(String[] args) {
int a = DieA.roll();
int b = DieB.roll();
// 결과 출력
System.out.printf("A: %d\n", a);
System.out.printf("B: %d\n", b);
}
}
class DieA {
public static int roll() {
double r = Math.random() * 6;
int randInt = (int) r;
return randInt + 1;
}
}
class DieB {
public static int roll() {
Random random = new Random();
return random.nextInt(6) + 1;
}
}
2. Math
Math API는 lang이라는 패키지에 담겨있다. 따라서 import java.lang.Math를 통해 불러와야한다. Math는 여러가지 수학적 계산에 사용되는 메소드를 제공하는 API이다.
그 중 radom()이라는 메소드가 자주 사용된다. Math.random() 이라는 메소드는 0 <= double < 1 범위의 실수를 반환한다.
따라서 Math.random()을 통해 정수 난수를 반환할 경우에는 int randInt = (int) r; 처럼 (int)를 통한 캐스팅 과정을 거쳐야한다.
그 밖에, 파이값을 반환하는 Math.PI(); / 절댓값을 반환하는 Math.abs(int or double); / 제곱값을 반환하는 Math.pow(int or double, 제곱수); / 제곱근을 반환하는 Math.sqrt(int or double); 메소드가 있다.
3. Random
Random API는 util이라는 패키지에 담겨있다. 따라서 import java.util.Random을 통해 불러와야한다. Random은 임의의 정수, 실수, Boolean 값을 생성할 수 있는 메소드를 제공한다. 주의할 점은 Math API와 다르게 Radom API의 메소드들은 인스턴스 메소드이다. 따라서 Random random = new Random(); 처럼 Radom 클래스 타입의 객체를 생성하여 사용해야한다.
- random.nextInt(int N) : 0 <= int < N의 정수를 반환
- random.nextDouble() : 0 <= double < 1의 실수를 반환
- random.nextBoolen() : 임의의 true 또는 false를 반환
예시 코드 2
import java.util.ArrayList;
public class TestResult {
public static void main(String[] args) {
ArrayList<Student> list = new ArrayList<Student>();
Student s1 = new Student("철수", 95);
Student s2 = new Student("영희", 92);
Student s3 = new Student("미영", 96);
list.add(s1);
list.add(s2);
list.add(s3);
System.out.println("=== 변경 전 ===");
for (int i = 0; i < list.size(); i++) {
Student s = list.get(i);
System.out.println(s.toString());
}
Student s4 = new Student("민희", 85);
list.set(0, s4);
System.out.println("=== 변경 후 ===");
for (int i = 0; i < list.size(); i++) {
Student s = list.get(i);
System.out.println(s.toString());
}
}
}
class Student {
private String name;
private int score;
public Student(String name, int score) {
this.name = name;
this.score = score;
}
public String toString() {
return String.format("Student { name: %s, score: %d }", name, score);
}
}
4. ArrayList
ArrayList는 변수, 또는 객체를 담을 수 있는 객체를 생성하는 API이다. ArrayList는 util 패키지에 담겨있으므로, import java.util.ArrayList를 통해 불러와야한다. ArrayList 또한 인스턴스메소드를 갖고 있기 때문에, ArrayList 클래스 타입의 객체를 생성해야한다. ArrayList를 통해 객체를 생성하기 위해서는 제네릭이라는 방법을 사용해야한다. 제네릭은 <> 안에 변수 또는 객체 타입을 작성하여 ArrayList 객체에 담을 변수 객체를 설정해주는 방법이다.
- ArrayList<Student> list = new ArrayList<Student>(); : Student 클래스 타입의 객체 list를 생성한다.
- list.add(s1); : list에 Student 객체를 추가한다.
- list.get(i); : list의 i번째 객체를 반환한다.
- list.set(i, s4) : list의 i번째 객체를 s4로 변경한다.
예시 코드 3
import java.util.StringTokenizer;
public class StringTokenizerTest {
public static void main(String[] args) {
String str = "박효신,이수,장범준,오혁";
StringTokenizer st = new StringTokenizer(str, ",");
while (st.hasMoreTokens()) {
System.out.println(st.nextToken());
}
}
}
5. StringTokenizer
토큰은 문법적으로 더 이상 나눌 수 없는 요소를 뜻한다. 이러한 토큰 중에 String 토큰은 util 패키지의 StringTokenizer API를 통해 나눠서 얻을 수 있다. StringTokenizer를 사용하기 위해서는 토큰을 구분하는 기준인 구분자를 정의해야한다.
- StringTokenizer st = new StringTokenizer(str, ","); : 에시코드3의 str을 구분자 ","로 구분하는 StringTokenizer 클래스 타입의 객체 st를 생성한다.
- st.hasMoreTokens() : st 객체에 남은 토큰이 있는지, 아닌지 true 또는 false 값으로 반환한다.
- st.nextToken() : st 객체의 다음 토큰을 반환한다.
'Java > Java' 카테고리의 다른 글
인터페이스 (0) | 2021.06.15 |
---|---|
상속 (0) | 2021.06.08 |
접근 제한자, 게터와 세터 (0) | 2021.05.31 |
레퍼런스 변수, static (0) | 2021.05.20 |
생성자 및 객체 활용(배열, 파라미터) (0) | 2021.05.18 |