Java
기본자료형 타입에 대응되는 클래스다.
기본자료형 값을 가지고 있는 객체를 만들 수 있다.
java.lang 패키지에 정의되어 있다.
사용해야 할 때
지원하는 Wrapper 클래스
기본자료형 | Wrapper 클래스 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
JAVA 1.5버전부터 도입된 기능
기본자료형 타입과 Wrapper객체 타입간의 변환을 자동으로 지원한다.
오토박싱
Integer instance = new Integer(10); // 박싱
Integer instance = 10; // 오토박싱
// Integer instance = new Integer(10); // 실제로 실행되는 코드
오토언박싱
Integer instance = new Integer(10); // 박싱
int value = instance.intValue(); // 언박싱
int value = instance; // 오토 언박싱
// int value = instance.intValue(); // 실제로 실행되는 코드
실제 활용 예제
public class Sample {
public void test1(int value) {
수행문
}
public void test2(Integer instance) {
수행문
}
}
public static void main(String args) {
Sample sample = new Sample();
sample.test1(1);
sample.test2(1); // 실제 실행되는 코드 sample.test2(new Integer(1));
}
package wrapper;
public class WrapperApp {
public static void main(String[] args) {
int x = 10;
// 박싱(Boxing) 기본자료형값을 객체를 생성해서 저장하는 것
Integer i = new Integer(10);
Integer i2 = new Integer("1000");
Double d = new Double(3.14);
Double d2 = new Double("3.14");
Boolean b = new Boolean(true);
Boolean b2 = new Boolean("true");
// 오토박싱(Auto-Boxing) 변수의 타입이 Wrapper 클래스 타입일 때 자동으로
// 해당 기본자료형과 대응되는 객체가 생성되고 그 객체에 값이 저장되는 것
Integer a1 = 100; // Integer a = new Integer(100);
Double a2 = 3.14; // Double a2 = new Double(3.14);
Boolean a3 = true; // Boolean a3 = new Boolean(true);
// 오토언박싱(Auto-unBoxing) 변수의 타입이 기본자료형 타입일 때
// Wrapper 타입의 객체에서 기본자료형값만 가져오는 것
int x1 = a1; // a1의 Wrapper객체에 대한 참조변수다.
// a1이 참조하는 Wrapper객체에 저장된 값만 가져와서
// 변수 x1에 대입된다.
double x2 = a2;
boolean x3 = a3;
}
}
package wrapper;
public class WrapperApp2 {
public static void main(String[] args) {
// 오토박싱이 지원되기 때문에
// 기본자료형 탕비의 변수에 값을 대입하는 것과 Wrapper 타입의 변수에 값을 대입하는 것을
// 구분없이 사용할 수 있다.
String name = "홍길동";
int age = 30;
Double height = 180.4; // Double height = new Double(180.4);
double weight = 78.2;
Boolean isMarried = false;
Integer savedPoint = 10000;
// 오토박싱이 지원되기 때문에
// Wrapper 타입의 배열에 기본자료형 값만 적어도 된다.
Integer[] scores = {100, 100, 80, 100, 50, 60, 70, 80, 50, 60};
// Integer[] scores = {new Interger(100), new Interger(90), new Interger(80), ...}
int total1 = 0;
for (Integer score : scores) {
// 오토언박싱이 지원되기 때문에
// Wrapper타입의 참조변수가 사칙연산자를 만나면 Wrapper 객체에 저장된 값만 가져와서
// 사칙연산에 사용된다.
total1 += score;
}
System.out.println("총합: " + total1);
int total2 = 0;
// 오토언박싱이 지원되기 때문에
// 배열에서 순서대로 조회되는 것이 Wrapper(래퍼)타입의 객체라면
// 그 타입과 대응되는 기본자료형 타입의 변수를 선언해서 값만 사용할 수 있다.
for (int score : scores) {
total2 += score;
}
System.out.println("총합: " + total2);
}
}
package wrapper;
public class WrapperApp3 {
public static void main(String[] args) {
// 문자열을 정수, 실수로 변환하기
String value1 = "150000";
String value2 = "3";
String value3 = "0.01";
int price = Integer.parseInt(value1);
int amount = Integer.parseInt(value2);
double savePointRate = Double.parseDouble(value3);
int total = price * amount;
int point = (int) (total * savePointRate);
System.out.println("총 구매가격 : " + total);
System.out.println("적립포인트 : " + point);
// 오류 상황
// java.lang.NumberFormatException
// int value3 = Integer.parseInt(""); // 빈 문자열은 숫자로 변환할 수 없다.
// int value3 = Integer.parseInt(" "); // 공백이 포함된 문자열은 숫자로 변환할 수 없다.
// int value3 = Integer.parseInt("가나다"); // 숫자가 아닌 문자들은 숫자로 변환할 수 없다.
// int value3 = Integer.parseInt("1234가"); // 숫자가 아닌 문자가 한 개라도 포함되면 숫자로 변환할 수 없다.
// int value3 = Integer.parseInt("123 "); // 공백이 포함되어 있으면 숫자로 변환할 수 없다.
// int value3 = Integer.parseInt("3.14"); // 실수형식의 문자열은 정수로 변환할 수 없다.
}
}
package wrapper;
public class WrapperApp4 {
public static void main(String[] args) {
System.out.println(Byte.MIN_VALUE);
System.out.println(Byte.MAX_VALUE);
System.out.println(Short.MIN_VALUE);
System.out.println(Short.MAX_VALUE);
System.out.println(Integer.MIN_VALUE);
System.out.println(Integer.MAX_VALUE);
System.out.println(Long.MIN_VALUE);
System.out.println(Long.MAX_VALUE);
}
}
// 시스템의 현재 날짜정보와 시간정보가 포함된 Date객체가 생성된다.
Date now = new Date();
// 지정된 유닉스타임(long값)에 해당하는 날짜와 시간정보가 포함된 객체가 생성된다.
Date date = new Date(0);
Date now = new Date();
long unxTime = now.getTime(); // 1970년 1월 1일 0시 0분 0초부터 현재 싯점까지의 시간을 1/1000초 단위로 환산한 값이 반환된다.
package date;
import java.util.Date;
public class DateApp {
public static void main(String[] args) {
// java.util.Date
// - 날짜와 시간정보를 표현하는 객체다.
// 자바가 실행되고 있는 시스템의 현재 날짜와 현재 시간정보를 가진 객체가 생성된다
Date now = new Date();
System.out.println(now);
// 유닉스타입값 조회하기
long time = now.getTime();
System.out.println(time);
// 유닉스타임값 조회하기2
long time2 = System.currentTimeMillis();
System.out.println(time2);
}
}
SimpleDateFormat
생성자
주요
주요 형식 기호
기호 | 설명 |
---|---|
y | 년 |
M | 월 |
d | 일 |
E | 요일 |
a | 오전/오후 |
H | 시간(0~23) |
h | 시간(1~12) |
m | 분(0~59) |
s | 초(0~59) |
S | 밀리초(0~999) |
사용 예제
Date now = new Date();
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy/MM/dd");
String value1 = sdf1.format(now); // "2020/10/20"
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy년 M월 d일 EEEE");
String value2 = sdf2.format(now); // "2020년 10월 20일 화요일"
SimpleDateFormat sdf3 = new SimpleDateFormat("HH:mm:ss");
String value3 = sdf3.format(now); // "21:41:31"
SimpleDateFormat sdf4 = new SimpleDateFormat("a h시 m분 s초");
String value4 = sdf4.format(now); // "오후 9시 42분 31초"
String text = "2020/10/20 21:42:31";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/ss HH:mm:ss");
Date day = sdf.parse(text); // text변수에 저장된 날짜에 해당하는 Date객체가 생성된다.
DecimalFormat
생성자
주요 메소드
주요 형식 기호
기호 | 설명 |
---|---|
0 | 숫자 |
# | 숫자 |
. | 소숫점 |
, | 자리수 구분 |
사용 예제
DecimalFormat df1 = new DecimalFormat("##,###");
String text1 = df1.format(12345678); // "12,345,678"
DecimalFormat df2 = new DecimalFormat("##,###.##");
String text2 = df2.format(123.456); // "123.46"
DecimalFormat df3 = new DecimalFormat("###.00");
String text3 = df3.format(12.4); // "12.40"
DecimalFormat df4 = new DecimalFormat("###.##");
String text4 = df4.format(12.4); // "12.4"
String text1 = String.valueOf(123); // "123"
String text2 = String.valueOf(10000000000L); // "10000000000"
String text3 = String.valueOf(3.14); // "3.14"
int number1 = Integer.parseInt("123"); // 123
long number2 = Long.parseLong("10000000000"); // 10000000000
double number3 = Double.parseDouble("3.14"); // 3.14