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