기본자료형을 객체자료형으로 변경하여 사용하거나 객체자료형을 기본자료형으로 변경할때 사용한다
위 그림을 보면 ShowData를 호출하면서 기본자료형인 int 를 넘겨주고 있다. 하지만 ShowData는 객체자료형을 받는 Object형으로 되어 있어서 사용을 못하는게 정상이다. 하지만 이것을 가능하게 해주는것이 바로 Wrapper 클래스 이다 .
Integer in = new Integer(7);
ShowData(in);
ShowData(new Integer(3));
이렇게 사용해주면된다 .
이렇게 사용을 하는것인데
이렇게 Warpper인스턴스로 감싸는것을 Boxing , Warpper인스턴스에서 저장된 데이터를 꺼내는것을 UnBoxing이라함
하지만 이렇게 하면 귀찮고 번거롭기 때문에 자바에서는 자동으로 일을 처리해주는 AutoBoxing 과 AutoUnBoxing 이 있다
래퍼 클래스 다양한 Static 메소드
public static void main(String[] args) {
// 클래스 메소드를 통한 인스턴스 생성 방법 두 가지
// 숫자기반 Integer 인스턴스 생성
Integer n1 = Integer.valueOf(5);
// 문자열 기반 Integer 인스턴스 생성
Integer n2 = Integer.valueOf("1024");
// 대소 비교와 합을 계산 하는 클래스 메소드
System.out.println("큰 수 :" + Integer.max(n1,n2) );
System.out.println("작은 수 :" + Integer.min(n1,n2) );
System.out.println("합 수 :" + Integer.sum(n1,n2) );
System.out.println();
//정수에 대한 2진, 8진 16진수 표현 결과를 반환하는 크래스 메소드
System.out.println(Integer.toBinaryString(12));
System.out.println(Integer.toOctalString(12));
System.out.println(Integer.toHexString(12));
}
}
결과 값
큰 수 :1024
작은 수 :5
합 수 :1029
1100
14
c
BigInteger클래스 (일반적인 상황에서 그렇게 큰 숫자를 사용할 일이 없어 활용도 낮음 )
long형보다 큰 숫자를 처리할때 사용하는 클래스
활용도 낮으니 나중에 필요하다면 교제 참고
BigDecimal 클래스
오차 없는 실수의 표현을 위한 클래스
math 클래스 ( 수학적 계산을 써야할때 사용하는 메소드 ) 계산기 어플이 아니라면 활용도 낮음
math 클래스 전부 static으로 되어있다. 인스턴스해서 사용하는것 아니다 .
활용도 낮으니 나중에 필요하다면 교제 참고
Random 클래스
여기서 봐야할 부분은 2번쨰 줄이다. 시드를 줘서 할 수도 있지만 시드를 주게되면 난수를 만드ㅡㄴ ㅇ
이것을 가지고 간단한 실습을 한번 해보겠다.
사용자에게 임의의 정수 2가지를 받고 그 두가지르 포함 하여 그 사이에 있는 난수 10개를 생성하고 출력하는 것을 만들어 보겠다 .
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("1임의의 정수를 입력해주세요");
int a = scanner.nextInt();
System.out.println("2임의의 정수를 입력해주세요");
int z = scanner.nextInt();
System.out.println("=====================");
Random random = new Random();
// 두번째에 더 큰수를 입력하였을때
if (a < z) {
//10번 반복
for (int i = 0; i < 10; i++) {
//0~z 까지의 난수를 하나 받는다
int b = random.nextInt(z);
//받은 난수가 a보다 적다면 커질때까지 난수를 받겠다.
while (b < a) {b = random.nextInt(z);}
//출력
System.out.println(b);
}
// 첫번째에 더 큰수를 입력 하였을때
} else if (z < a) {
//10번 반복
for (int i = 0; i < 10; i++) {
//0~a 까지의 난수를 하나 받는다
int b = random.nextInt(a);
//받은 난수가 a보다 적다면 커질때까지 난수를 받겠다.
while (b < z) {b = random.nextInt(a);}
//출력
System.out.println(b);
}
}
}
}
/////////////////// 강사님께서 짠 짧은 알고리즘 코드 ////////////
int min ,max; // 스캐너로 받은 값 큰 값과 작은값 정의
if (a > z ) {
min = z;
max = a;
}else {
min = a;
max = z;
} // 작은값은 10 높은값은 20 이라 가정
int rn;
for(int i = 0 ; i < 10 ; i++) {
rn = min; // 작은 값넣어줌 10이다
rn += random.nextInt(max - min +1); // 20 - 10 + 1 // 0부터 11 까지의 값을 가져옴
// 우리는 10에서 부터 20 사이의 난수 이니 가져온 값에 10 더해주면 끝!
System.out.println(rn);
}
이렇게 했을때 결과 값
이렇게 먼저 큰수를 입력하던지 와 상관없이 내가 입력한 값을 벗어나지 않고 출력되는 것을 볼수 있다.
'아옳옳의 코딩공부 > 아옳옳 자바코딩공부' 카테고리의 다른 글
2021-04-09 자바공부 (제네릭) (0) | 2021.04.09 |
---|---|
2021-04-08 자바공부 (StringTokenizer클래스 , Arrays 클래스 ) (0) | 2021.04.08 |
2021-04-05 자바공부 (Object 클래스 ) (0) | 2021.04.06 |
2021-04-05 자바공부 (예외처리) (0) | 2021.04.05 |
2021-02-28 자바공부 (String 클래스) (0) | 2021.02.28 |