ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Java 자바] 11. 기본 API 클래스 ⑧ Wrapper(포장), Math, Random 클래스
    Programming/Java 2022. 9. 4. 22:34
    반응형

    11-9. Wrapper(포장) 클래스

    - 포장 객체: 기본 타입(byte, char, short, int, long, float, double, boolean)의 값을 갖는 객체

    - 포장하고 있는 기본 타입 값은 외부에서 변경 불가

    기본 타입 포장 클래스
    byte Byte
    char Character
    short Short
    int Integer
    long Long
    float Float
    double Double
    boolean Boolean

    11-9-1. 박싱(Boxing)과 언박싱(Unboxing)

    - Boxing: 기본 타입의 값을 포장 객체로 만드는 과정 (기본타입의 값이나 문자열을 넘겨주면 됨)
      (1) 생성자 new 를 사용하여 생성
      (2) value of를 사용하여 생성 

    - Unboxing: 포장 객체에서 기본 타입의 값을 얻어내는 과정

    // Boxing
    Integer obj1 = new Integer(100);
    Integer obj2 = new Integer("200");
    Integer obj3 = Integer.valueOf("300");
    		
    // Unboxing
    int value1 = obj1.intValue();
    int value2 = obj2.intValue();
    int value3 = obj3.intValue();

    11-9-2. 자동 박싱과 언박싱

    - 자동 박싱: 포장 클래스 타입에 기본값이 대입될 경우 발생

    - 자동 언박싱: 기본 타입에 포장 객체가 대입될 경우 발생

    // 자동 박싱
    Integer obj = 100;
    
    // 자동 언박싱
    int value = obj;
    
    // 컬랙션 객체에 기본값 저장시 자동 박싱
    List<Integer> list = new ArrayList<>();
    list.add(200);	// 자동 박싱

    11-9-3. 문자열을 기본 타입 값으로 변환

    - parse+기본타입 명으로 되어 있는 정적 메소드를 활용해 문자열을 기본타입값으로 변환

    int value1 = Integer.parseInt("10");
    double value2 = Double.parseDouble("3.14");

    11-9-4. 포장 값 비교

    - 포장 객체는 내부 값을 비교하기 위해 ==와 != 연산자를 사용할 수 없음 (포장 객체의 참조를 비교하기 때문)
    - 내부의 값만 비교하기 위해선 언박싱한 값을 얻어 비교하거나 equals() 메소드로 내부 값을 비교해야 함

    - 포장클래스의 equals() 메소드는 내부의 값을 비교하도록 오버라이딩 되어 있음

    Integer obj1 = 300;
    Integer obj2 = 300;
    
    System.out.println(obj1 == obj2);				// false
    System.out.println(obj1.intValue() == obj2.intValue());		// true
    System.out.println(obj1.equals(obj2));				// true

    11-10. Math, Random 클래스

    11-10-1. Math 클래스

    메소드 설명 예제 코드 리턴값
    int abs(int a)
    double abs(double a)
    절대값 int v1 = Math.abs(-1);
    double v2 = Math.abs(-3.14);
    v1 = 1,
    v2 = 3.14
    double ceil(double a) 올림값 double v3 = Math.ceil(1.3);
    double v4 = Math.ceil(-1.7);
    v3 = 2,
    v4 = -1
    double floor(double a) 내림값 double v5 = Math.floor(1.3);
    double v6 = Math.floor(-1.7);
    v5 = 1,
    v6 = -2
    int max(int a, int b) 최대값 int v7 = Math.max(-2, 3); v7 = 3
    int min(int a, int b) 최소값 int v8 = Math.min(-2, 3); v8 = -2
    double random() 랜덤값 double v9 = Math.random(); 0.0 <= v9 < 1.0
    double rint(double a) 가까운 정수의 실수값 double v10 = Math.rint(5.3);
    double v11 = Math.rint(5.7);
    v10 = 5.0
    v11 = 6.0
    long round(double a) 반올림 값 long v12 = Math.round(5.3);
    long v13 = Math.round(5.7);
    v12 = 5
    v13 = 6

    11-10-2. Random 클래스

    - Math.random() 메소드는 0.0 에서 1 사이의 double 난수를 얻는 데만 사용
    - Random클래스는 boolean, int, long, float, double 난수를 얻을 수 있음

    생성자 설명
    Random() 호출 시마다 다른 종자값(현재시간 이용)이 자동 설정
    Random(long seed) 매개값으로 주어진 종자값 설정

    - Random 클래스가 제공하는 메소드

    리턴값 메소드(매개 변수) 설명
    boolean nextBoolean() boolean 타입의 난수를 리턴
    double nextDouble() double 타입의 난수를 리턴(0.0 <= ~ < 1.0)
    int nextInt() int 타입의 난수를 리턴 (int 전체 범위 내)
    int nextInt(int n) int 타입의 난수를 리턴 (0 <= ~ < n)
    반응형

    댓글

Designed by Tistory.