지금까지 배운 내용들로
다양한 클래스들을 이해해보겠다.
자바에는 다양한 클래스들을 지원해주는데
오늘 알아볼 클래스는
Wrapper, BIgInteger, BigDecimal, 난수 생성 함수, 문자열 토큰 이다.
1. Wrapper 클래스
Wrapper 클래스는 기본 자료형의 데이터를 인스턴스화 시키는 클래스이다.
Wrapper란 말 그대로 감싸고 있다는 것이다.
데이터 클래스를 의미한다.
이런걸 Boxing 이라고 하고 반대는 Unboxing이라고한다.
자바5.0부터는
Auto Boxing, Auto Unboxing이 지원 되서
클래스 생성선언 없이도 바로 생성되어 지원된다.
ex)
static 메소드를 이용하여 Boxing 해보아라.
(valueOf(); 메소드 사용)
(실행 화면)
이러한 Wrapper 클래스안에 valueOf 의 메소드가 있다. 이 값을 이용하면 Wrapper 클래스의 인스턴스를 생성할 수 있다.
그런데 결과 화면을 보면 동일한 인스턴스라고 나온다.
저장되는 데이터는 문자열과 같이 수정이 불가능하다. 그렇기 때문에 메모리 효율 상 같은 인스턴스를 여러개 만들 필요가 없는것이다.
값을 변경하려면 새로운 인스턴스를 만들어 참조값을 변경해주면 된다.
현재 iValue1 과 iValue2는 같은 인스턴스를 참조하고 있다.
2. BigInteger, BigDecimal 클래스
매우 큰 수( BigInteger)
가장 표현범위가 넓은 long형으로도 표현이 불가능한 수를 표현할때 사용한다.
ex)
BigInteger bigValue1 = new BigInteger("10000000000000000000000000000");
왜 입력을 문자열로 넣을까?
그 이유는 정수로 넣게되면 그 정수를 옯겨줄 매개변수가 필요한데
가장큰 long형으로도 커버가 안되기 때문에
문자열로 입력해야하는 것이다.
BigDecimal
-> 정확한 소수점 표현
처음 자료형을 배울때 float나 double의 소수점 표현에
오차가 있다고 말했다.
하지만 오차가 없게 표현하려면
BigDecimal 함수를 사용하면 된다.
BigInteger와 같이 문자열로 입력된다.
문제 20-2
두 개의 실수를 입력받아 두 실수의 차를 절대값으로 계산하시오.
(BigDeciaml 이용 코드)
(실행화면)
결과를 보면 오차없이 계산된 것을 확인 할 수 있다.
3. 난수 생성
JAVA에는 java.util 패키지로 Random 클래스를 제공한다.
- boolean nextBoolean() : boolean형 난수 반환
- int nextInt() : int형 난수 반환
- long nextLong() : long형 난수 반환
- int nextInt(int n) : 0이상 n미만의 범위 내에있는 int형 난수 반환
- float nextFloat() : 0.0 이상 1.0 미만의 float형 난수 반환
- double nextDouble() : 0.0 이상 1.0 미만의 double형 난수 반환
괄호() 안에는 seed 값이 들어간다.
default 값은 System.currentTimeMillis() 이다.
시간에 관련한 seed 값이 들어간다.
4. 문자열 토큰
- 문자열에서 구분자를 이용해 문자열을 구분하는 방법이다.
ex)
14:99
위 글자에서 ' : ' 를 구분자로 하여 14와 99를 구분할 수 있다.
StringTokenizer st = new StringTokenizer("14:99", ":");
public String nextToken() // 다음 토큰 반환 메서드
(*참조 - 난 정말 JAVA를 공부한 적이 없다구요, 윤성우)
'Programing > JAVA 일지' 카테고리의 다른 글
JAVA(13일차) - Collection Framework(컬렉션 프레임워크) (0) | 2016.12.24 |
---|---|
JAVA(12일차) - (2) 제네릭(Generics) (0) | 2016.12.23 |
JAVA(11일차) - (1) 메모리 관리, Object 클래스, clone() (0) | 2016.12.22 |
JAVA(10일차) - (2) 예외처리 (0) | 2016.12.22 |
JAVA(10일차) - (1) abstract, interface, inner class, 전화번호관리 프로그램(05) (0) | 2016.12.21 |