써먹는 웹개발

[Java] 13강 자바 API 본문

Study/Java & Python

[Java] 13강 자바 API

kmhan 2021. 2. 25. 17:27


728x90
반응형

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

728x90
반응형


Comments