// 로또번호 6개 만들기
// 45개의 정수값을 저장하기 위한 배열 생성.
int[] ball = new int[45];
// 배열의 각 요소에 1~45의 값을 저장한다.
for(int i=0; i < ball.length; i++)
ball[i] = i+1;
System.out.println(Arrays.toString(ball));
int temp = 0; // 두 값을 바꾸는데 사용할 임시변수
int j = 0; // 임의의 값을 얻어서 저장할 변수
// 배열의 i번째 요소와 임의의 요소에 저장된 값을 서로 바꿔서 값을 섞는다.
// 0번째 부터 5번째 요소까지 모두 6개만 바꾼다.
for(int i=0; i < 6; i++){
j = (int)(Math.random()*45); // 0~44범위의 임의의 값을 얻는다.
temp = ball[i];
ball[i] = ball[j];
ball[j] = temp;
System.out.println(Arrays.toString(ball));
}
// 배열 ball의 앞에서 부터 6개의 요소를 출력한다.
for(int i=0; i < 6; i++)
System.out.printf("ball[%d]=%d%n", i, ball[i]);
클래스 자체가 자료형으로 사용가능하기에 래퍼클래스도 자료형으로도 사용 가능하고, 그 안에 메소드도 활용가능
기본 자료형(primitive)
- 자료형 사용 o, 메소드 사용x
참조 자료형(non-primitive, reference type)
(Wrapper Class = 참조형)
-자료형 사용 o, 메소드 사용 o
기본 자료형
Wrapper Class
boolean
Boolean
char
Character
byte
Byte
int
Integer
short
Short
long
Long
float
Float
double
Double
boxing vs unBoxing
기본자료형 vs Wrapper클래스
boxing : 기본자료형 → wrapper클래스로 변환(객체화)
unBoxing : wrapper클래스 → 기본자료형으로 변환
객체에 저장되어 있는 데이터를 기본형 데이터로 꺼내는 작업
Wrapper클래스가 박스
안에 메소드,필드 등 담아두기에 박스
반대로 박스(객체)에 저장되어 있는 데이터를 기본형 데이터로 꺼내는 작업이 언박싱
// boxing
int num1 = 10;
Integer integer1 = new Integer(**num1**); // num1 자체를 래퍼클래스로 전환 -> boxing
// unBoxing
int num2 = integer1.**intValue();** // num2 : 래퍼클래스를 기본자료형 int로 변환 -> unBoxing
// boxing
int i = 10;
Integer iValue1 = new Integer(i);
Integer iValue2 = new Integer(123);
double d = 1.123;
Double dValue1 = new Double(d);
Double dValue2 = new Double(5.323);
// unBoxing
Integer iValue = new Integer(4578);
int i = iValue.intValue();
Double dValue = new Double(44.241);
double d = dValue.doubleValue();
autoBoxing, autoUnBoxing
JDK1.5버젼부터 지원
자동으로 박싱,언박싱
기본 타입과 Wrapper클래스 타입 간의 변환이 자동으로 이루어진다
(바로 대입적용이 가능케됨)
// 자동박싱,언박싱. 바로 대입적용이 가능케됨
Integer integer2 = num1; // autoBoxing
int num3 = integer2; // autoUnBoxing
int i = 10;
Integer iValue = i; // 바로 대입 가능
Double dValue = new Double(3.14);
double d = dValue; // 바로 대입 가능
1)String을 기본 자료형으로 바꾸기
parsing(파싱)
기본자료형에서 래퍼클래스로 변환하기 위해 많이 사용하는게 파싱(parsing)
parsing : 문자열을 기본 자료형으로 변환하는 것
변환가능한 같은 형태이여야한다
ex) 숫자면 숫자끼리. 문자열 "1"을 int 1로 변환 가능
int i = Integer.parseInt("10");
double d = Double.parseDouble("홍길동");
// 에러메시지 : java.lang.NumberFormatException: For input string: "홍길동"
// 파싱할 자료형의 형태를 지니지 않아서 나는 에러
short s = Short.parseShort("10 "); // 잦은 실수 요인 : 공백 조심
float f = Float.parseFloat(" 10");
boolean b = Boolean.parseBoolean("true");
byte by = Byte.parseByte("10");
Long l = Long.parseLong("10");
// 캐릭터 래퍼클래스에는 파싱기능 존재x -> chatAt()로 대체
byte b = Byte.parseByte("1");
short s = Short.parseShort("2");
int i = Integer.parseInt("3");
long l = Long.parseLong("4");
float f = Float.parseFloat("0.1");
double d = Double.parseDouble("0.2");
boolean bool = Boolean.parseBoolean("true");
char c = "abc".charAt(0);
2)primitive type(기본 자료형)을 String으로 바꾸기
String str1 = i + ""; // 방법1. 가장 쉬운 변환.대중적 사용
String str2 = String.valueOf(s); // 방법2
String str3 = Byte.valueOf(by).toString(); // 방법3
String b = Byte.valueOf((byte)1).toString();
String s = Short.valueOf((short)2).toString();
String i = Integer.valueOf(3).toString();
String l = Long.valueOf(4L).toString();
String f = Float.valueOf(0.1f).toString();
String d = Double.valueOf(0.2).toString();
String bool = Boolean.valueOf(true).toString();
String ch = Character.valueOf('a').toString();