프로그래밍/java
[JAVA] Wrapper 클래스
승민아
2022. 5. 21. 18:49
Wrapper 클래스
: 자바 기본 타입을 클래스화 한 것 -> 유용한 메소드가 제공됨 -> JDK의 많은 클래스는 대부분 객체만 다룬다
-> 그래서 클래스화
기본 타입 | byte | short | int | long | char | float | double | boolean |
Wrapper 클래스 | Byte | Short | Integer | Long | Character | Float | Double | Boolean |
-> ex) java.lang.Integer, java.lang.Character
Wrapper 객체 생성 ( 기본 타입으로 )
public class Hongong {
public static void main(String args[]){
Integer i = Integer.valueOf(10);
Character c = Character.valueOf('c');
Double d = Double.valueOf(3.14);
Boolean b = Boolean.valueOf(true);
}
}
-> static Integer valueOf(int i)로 메소드가 있기에 저렇게 만들 수 있음
-> static Integer valueOf(String s)도 존재하기에 아래처럼 문자열로 생성 가능
단, Float 객체는 float 타입으로 생성해야함
Float ff = Float.valueOf((float)3.14);
(String으로 생성)
public class Hongong {
public static void main(String args[]){
Integer i = Integer.valueOf("10");
Double d = Double.valueOf("3.14");
Boolean b = Boolean.valueOf("true");
Float f = Float.valueOf("3.14");
}
}
java9 이후로 생성자를 이용한 Wrapper 객체 생성이 불가함
Wrapper 객체 메소드
int -> Integer 객체
Integer i = Integer.valueOf(10);
Integer -> int
Integer i = Integer.valueOf(10);
int ii = i.intValue();
다른 자료형들도 똑같다.
Character c = Character.valueOf('c');
char cc = c.charValue();
Double d = Double.valueOf(3.14);
double dd = d.doubleValue();
Boolean b = Boolean.valueOf(true);
boolean bb = b.booleanValue();
박싱과 언박싱
- 박싱 : 기본 타입의 값을 Wrapper 객체로 변환
- 언박싱 : Wrapper 객체에 들어있는 기본 타입의 값을 빼냄
박싱은 아래와 같은 거 ( int -> Integer )
Integer ten = Integer.valueOf(10);
언박싱 ( Wrapper -> int )
int n = ten.intValue();
자동 박싱과 언박싱
자동 박싱
Integer ten = 10; // Integer.valueOf(10) 이 자동
자동 언박싱
int n = ten; // ten.intValue()로 자동 처리
예제 코드
public class Hongong {
public static void main(String args[]){
int n = 10;
Integer intObject = n; // 자동 박싱
System.out.println(intObject);
int m = intObject + 10; // 자동 언박싱
System.out.println(m);
}
}
Wrapper 주요 메소드
문자열을 기본 데이터 타입으로 변환 ( ex, Integer.parseInt("123") )
public class Hongong {
public static void main(String args[]){
int i = Integer.parseInt("123");
boolean b = Boolean.parseBoolean("true");
double d = Double.parseDouble("3.14");
}
}
기본 타입 -> 문자열 변환 (ex, Integer.toString(123) )
public class Hongong {
public static void main(String args[]){
String s1 = Integer.toString(123);
String s2 = Integer.toHexString(123);
String s3 = Double.toString(3.14);
String s4 = Character.toString('a');
String s5 = Boolean.toString(true);
}
}
2진수 문자열로 변환
System.out.println(Integer.toBinaryString(25));
2진수의 1의 개수
System.out.println(Integer.bitCount(28));
Character 메소드
소문자로 변환 ( Character.toLowerCase() )
System.out.println(Character.toLowerCase('A'));
숫자인가? ( Character.isDigit() )
public class Hongong {
public static void main(String args[]){
char c = '4';
if(Character.isDigit(c))
System.out.println("숫자입니다.");
}
}
영문자인가? ( Character.isAlphabetic() )
public class Hongong {
public static void main(String args[]){
char c = 'F';
if(Character.isAlphabetic(c))
System.out.println("영문자 입니다.");
}
}