본문 바로가기
프로그래밍/Java

Java - Java의 기본 클래스 (1)

by 왕거 2020. 7. 25.

20번째 강의는 자바의 기본 클래스에 대한 강의였는데, 길이가 길고 내용이 다양해서 두번으로 나눠서 정리해야겠다.

 

래퍼 클래스(Wrapper Class)

  • 이름 그대로 무언가를 감싸는 역할을 하는 클래스이다.
  • 래퍼 클래스는 기본 자료형 값을 인스턴스로 감싸서 인스턴스를 필요로하는 작업에 값을 사용 가능하도록 한다.
    • 기본 자료형의 종류대로 각각의 래퍼 클래스가 존재한다.
    • ex> Integer int1 = new Integer(1)
  • 래퍼 클래스를 통해서 만들어지는 인스턴스는 "Immutabe"하다.
    • immutable하다의 의미는 내부의 값을 변경할 수 없다라는 뜻
    • 그렇다면 값의 수정 소요가 생긴다면?
      • 값을 꺼내서 연산 또는 수정한 값을 이용해 새로운 인스턴스를 만들어야 한다!
  • 래퍼 클래스의 박싱(Boxing)
    • 래퍼 클래스가 기본 자료형 값을 인스턴스로 감싸는 작업을 박싱이라고 말한다.
  • 래퍼 클래스의 언박싱(Unboxing)
    • 기본 자료형 값을 감싼 래퍼 클래스의 인스턴스에서 값을 뽑아내는 것을 말한다.
    • 여러번 수행할 수 있음
  • 오토 박싱과 오토 언박싱
    • 이름 그대로 박싱과 언박싱 작업을 자동적으로 수행하는 것
    • 조건
      • 오토 박싱 : Interger intOBJ = 10;  => 인스턴스가 자리해야 할 위치에 기본 자료형 값이 왔을 때 수행
      • 오토 언박싱 : int num1 = intOBJ;  => 기본 자료형 값이 자리해야 할 위치에 인스턴스가 왔을 때 수행
  • java.lang.number 클래스
    • 모든 래퍼 클래스가 상속하는 클래스
    • 이 클래스에 언박싱에 사용하는 메소드가 추상 메소드로 정의되어있는데, 개발자 자신이 원하는 자료형으로 반환하도록 선택할 수 있다.
  • 래퍼 클래스의 static 메소드들
    • valueof()
      • ex) new Integer(10) == Integer.valueof(10) 서로 같은 동작이다.
      • 문자열을 기반으로 인스턴스를 생성할 수 있다.
    • max, min, sum
      • 숫자를 비교해서 큰 값, 작은 값을 반환하거나 합계를 반환한다.
    • toBinaryString, toOctalString, toHexString
      • 2인자로 받은 값을 각각 2진수, 8진수, 16진수의 배열로 반환한다.

BingInteger 클래스와 BigDecimal 클래스

  • BigInteger Class
    • Long 자료형 이상의 정수 데이터를 다루기 위한 클래스이다.
    • 이 클래스로 생성되는 인스턴스도 immutable한 인스턴스이다.
      • ex) BigInteger big1 = new BigInteger("큰 정수");
        • 인자로 넘기는 숫자를 문자열로 표현하는 이유는 그냥 수를 명시하면 일정 범위 이상의 정수는 인식하지 못하기 때문에
    • 기본 메소드들
      • 기본 사칙연산 메소드(add, subtract, multiply, divide 등등)
      • intValueExact()  -  인스턴스의 값을 정수로 변환
  • BigDecimal Class
    • 오차가 발생할 수밖에 없는 실수 표현 대신에 오차를 발생시키지 않는 실수 연산을 위해 사용하는 클래스
    • 이 클래스로 생성되는 인스턴스도 immutable한 인스턴스이다.
      • ex) BinDecimal big2 = new BigDecimal("실수")
        • 실수를 문자열로 표현하는 이유는 실수 데이터의 경우는 표현 과정에서 어쩔 수 없이 오차가 발생하기 때문에 원하는 실수를 정확하게 지정하기 위한 목적으로 문자열 데이터로 값을 지정
    • 기본 메소드들
      • 기본 사칙연산 메소드(add, subtract, multiply, divide)

'프로그래밍 > Java' 카테고리의 다른 글

Java - Java의 기본 클래스 (2)  (0) 2020.09.21
Ubuntu에서 Java 개발환경 세팅  (0) 2020.09.14
Java - JVM의 메모리 모델과 Object 클래스  (0) 2020.07.23
Java - 예외처리 (2)  (0) 2020.07.17
Java - 예외처리 (1)  (0) 2020.07.12