써먹는 웹개발
[Java] 13강 자바 API 본문
13강 자바 API
1. 자바 API
- 자바 API는 프로그램을 만들기 위한 도구이며, 더 편리한 프로그램이 가능해진다.
자바 API는 패키지로 제공된다.
2. 패키지
- 패키지는 일종의 디렉터리(폴더)이다. 자바 API는 이곳에 담겨 제공된다.
- 역할 : 관련 코드를 하나로 묶어, 관리를 수월하게 한다.
또 같은 이름의 코드를 다른 패키지로 나누어, 분류하기도 한다.
3. 자바 API 사용 예
- Math 클래스
- Random 클래스
- ArrayList 클래스
4. 요약
5. 개념 실습
1. 자바 API 가져오기 - Random
// 자바 API를 불러옴
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 {
// 1 부터 6사이 정수를 반환 [참고] https://cloudstudying.kr/challenges/348
public static int roll() {
double r = Math.random() * 6; // 0.0 <= r < 6.0
int randInt = (int) r; // 0, 1, 2, ..., 5
return randInt + 1; // 1, 2, 3, ..., 6
}
}
class DieB {
public static int roll() {
/* Random 클래스를 활용하여 주사위의 눈값(1 ~ 6)을 반환하시오.*/
Random rand = new Random();
int randInt = rand.nextInt(6);
return randInt + 1;
}
}
2. 주사위 통계
// 자바 API를 불러옴
import java.lang.Math;
import java.util.Random;
public class RandomTest {
public static void main(String[] args) {
int a;
int b;
int[] cnt = new int[100];
for(int j=2;j<=12;j++){
// 변수 생성 및 주사위 던지기
a = DieA.roll();
b = DieB.roll();
cnt[j-2] = a+b;
// 결과 출력
System.out.printf("%d => ",j);
for(int i=0;i<cnt[j-2];i++){
System.out.print("#");
}
System.out.println();
}
}
}
class DieA {
// 1 부터 6사이 정수를 반환 [참고] https://cloudstudying.kr/challenges/348
public static int roll() {
double r = Math.random() * 6; // 0.0 <= r < 6.0
int randInt = (int) r; // 0, 1, 2, ..., 5
return randInt + 1; // 1, 2, 3, ..., 6
}
}
class DieB {
public static int roll() {
// 1 부터 6사이 정수를 반환 [참고] https://cloudstudying.kr/challenges/404
Random rand = new Random();
int randInt = rand.nextInt(6); // (0 ~ 5)
return randInt + 1;
}
}
3. ArrayList - add() & size()
/* 1. ArrayList 클래스를 java.util 패키지에서 import 하시오. */
import java.util.ArrayList;
public class ArrayListTest {
public static void main(String[] args) {
/* 2. String을 담을 수 있는 리스트 객체를 만드시오. */
ArrayList<String> names = new ArrayList<String>();
/* 3. 리스트에 이름을 추가하시오. */
names.add("Kim");
names.add("Lee");
names.add("Park");
names.add("Choi");
names.add("Hong");
names.add("No");
/* 4. 반복문을 통해 모든 이름을 출력하시오. */
for (int i = 0; i < names.size(); i++) {
String name = names.get(i); // i번째 인덱스 값을 가져옴
System.out.printf("names.get(%d) -> %s\n", i, name.toString());
}
}
}
4. ArrayList - get()
import java.util.ArrayList;
public class BookTest {
public static void main(String[] args) {
/* 1. Book을 담기 위한 ArrayList 객체를 만드시오. */
ArrayList<Book> list = new ArrayList<Book>();
/* 2. Book 객체를 생성하시오. */
Book onePiece = new Book("원피스", 4500);
Book naruto = new Book("나루토", 4000);
Book java = new Book("자바 프로그래밍", 24000);
/* 3. ArrayList 객체에 Book 객체들을 담으시오. */
list.add(onePiece); // 원피스 객체 담기
list.add(naruto); // 나루토 객체 담기
list.add(java); // 자바 객체 담기
/* 4. 리스트에 담긴 모든 책 정보 출력 */
for (int i = 0; i < list.size(); i++) {
Book book = list.get(i);
System.out.printf("list.get(%d) -> %s\n", i, book.toString());
}
}
}
class Book {
// 필드
private String title;
private int price;
// 생성자
public Book(String title, int price) {
this.title = title;
this.price = price;
}
// 메소드
public String toString() {
return String.format("Book { name: %s, price: %d }", title, price);
}
5. ArrayList - set()
import java.util.ArrayList;
public class MonsterTest {
public static void main(String[] args) {
// Monster 객체를 저장할 ArrayList 생성
ArrayList<Monster> list = new ArrayList<Monster>();
// Monster 객체 생성
Monster slime = new Monster("슬라임", 1);
Monster orc = new Monster("오크", 3);
Monster golem = new Monster("골렘", 8);
// ArrayList에 객체 담기
list.add(slime);
list.add(orc);
list.add(golem);
// 전체 출력
System.out.println("=== 변경 전 ===");
for (int i = 0; i < list.size(); i++) {
Monster m = list.get(i); // i번째 요소 반환
System.out.println(m.toString());
}
/* 1. 레벨 1의 토끼 객체를 생성하세요. */
Monster rabbit = new Monster("토끼", 1);
/* 2. ArrayList의 첫 요소인 슬라임을 토끼로 변경하세요. */
list.set(0,rabbit);
// 전체 출력
System.out.println("=== 변경 후 ===");
for (int i = 0; i < list.size(); i++) {
Monster m = list.get(i); // i번째 요소 반환
System.out.println(m.toString());
}
}
}
class Monster {
// 필드
private String name;
private int level;
// 생성자
public Monster(String name, int level) {
this.name = name;
this.level = level;
}
// 메소드
public String toString() {
return String.format("Monster { name: %s, level: %d }", name, level);
}
}
6. 라면의 총합
import java.util.ArrayList;
public class RamenTest {
public static void main(String[] args) {
// Ramen 객체를 담기 위한 ArrayList 생성
ArrayList<Ramen> list = new ArrayList<Ramen>();
// Ramen 객체 생성
Ramen shin = new Ramen("신라면", 800);
Ramen jin = new Ramen("진라면", 700);
Ramen bibim = new Ramen("비빔면", 600);
/* 1. Ramen 객체를 ArrayList에 담으세요. */
list.add(shin); // 신라면
list.add(jin); // 진라면
list.add(bibim); // 비빔면
/* 2. ArrayList에 담긴 모든 객체 정보를 출력하세요. */
for (int i = 0; i < list.size(); i++) {
Ramen ramen = list.get(i); // i 번째 요소 가져오기
System.out.printf("%s\n", ramen.toString());
}
/* 3. ArrayList에 담겨진 객체의 총합을 계산하세요. */
int sum = 0;
for (int i = 0; i < list.size(); i++) {
Ramen ramen = list.get(i); // i 번째 요소 가져오기
sum += ramen.getPrice(); // 라면 가격을 누적하여 더하기
}
System.out.println("================================");
System.out.printf("합계 : %d원",sum);
}
}
class Ramen {
// 필드
private String name;
private int price;
// 생성자
public Ramen(String name, int price) {
this.name = name;
this.price = price;
}
// 메소드
public String toString() {
return String.format("Ramen { name: %s, price: %d }", name, price);
}
/*4. price에 대한 게터를 작성하세요. */
public int getPrice() {
return price;
}
}
7. 리뷰: 로또 번호 생성
import java.util.Collections;
import java.util.Arrays;
import java.util.ArrayList;
public class SimpleLottoMachine {
public static void main(String[] args) {
// 45개의 공을 만든다
ArrayList<Integer> list = new ArrayList<Integer>();
for(int i=1;i<=45;i++){
list.add(i); // 1~45
}
// 섞는다
Collections.shuffle(list);
// 뽑는다
int[] num = new int[6];
for (int i = 0; i < num.length; i++) {
num[i] = list.get(i);
}
// 결과 출력
System.out.printf("자동 생성 번호: [%d, %d, %d, %d, %d, %d]",num[0],num[1],num[2],num[3],num[4],num[5]);
}
}
강의 출처 : cloudstudying.kr/lectures/203
'Study > Java & Python' 카테고리의 다른 글
[Java] 15강 인터페이스 (0) | 2021.02.26 |
---|---|
[Java] 14강 상속, 클래스의 확장 (0) | 2021.02.25 |
[Java] 12강 접근 제한자와 게터(getter)&세터(setter) (0) | 2021.02.25 |
[Java] 11강 레퍼런스와 static편 학습 내용 보내드립니다. (0) | 2021.02.25 |
[Java] 10강 생성자 호출과 정의 (0) | 2021.02.25 |