본문 바로가기
BACK-END/JAVA

WRAPPER 클래스와 메소드 사용법

by 썬키 2022. 12. 21.

1. 개요

Wrapper 클래스란, 자료형의 기본 타입인 byte, int, double, float, char 등을

클래스(필드와 메소드의 집합)로 만들어 놓은 것을 말한다.

 

자료형 클래스(Wrapper Class)
byte Byte.class
short Short.class
int Integer.class
long Long.class
float Float.class
double Double.class
char Character.class
boolean Boolean.class

 

2. 클래스란?

// 현실세계에 있는 Tv를 소프트웨어화 한다고 가정하자
// 소프트웨어화를 하기 위해 필요한것이 클래스

Class Tv {
	// 필드(속성)
    String color;	// 색상
    int size;		// 사이즈
    int channel;	// 채널
    public static int volume = 10;		// 볼륨
    
    // 메소드(동작)
    void channelUp() {	// Tv채널을 한 칸 위로 이동하는 동작
    	channel++;
    }
    
    public static void volumeDown() {	// Tv의 볼륨을 한 칸 아래로 낮추는 동작
    	volume--;
    }

위의 소스코드와 같이 클래스현실세계에 있는 사물을 소프트웨어화 할 때에 필요한 것이다.

 

Tv를 예로 들어, 각 Tv는 고유한 색상ㆍ채널ㆍ사이즈(필드) 등이 있을 것이고

채널과 볼륨을 조절할 수 있는 기능(메소드)이 있을 것이다.

 

클래스
필드
메소드

 

3. 클래스의 사용법

클래스를 사용한다는 것은 다른 말로 클래스를 인스턴스화 해서 객체를 생성한 다음 이용한다는 말과 같다.

단, 리턴 타입 앞에 static이 붙은 필드와 메소드들은 객체를 생성하지 않고도 사용할 수 있다.

public class MainClass {
	public static void main(String[] args) {
    	
        // 객체 생성
        Tv tv = new Tv();
        
        // Tv의 채널을 7로 초기화한다.
        tv.channel = 7;
        
        // Tv의 채널을 한 칸 위로 이동한다.
        tv.channelUp();
        
        // Tv의 볼륨을 한 칸 아래로 낮춘다.
        Tv.volumeDown();
        
        System.out.printf("현재 채널은 %d번입니다.", tv.channel); // 현재 채널은 8번입니다.
        System.out.printf("현재 볼륨은 %d입니다.", Tv.volume); // 현재 음량은 9입니다.
       
        
	}
}

Tv의 volumeDown 메소드를 사용하기 위해 Tv 타입의 참조 변수인 tv를 사용하지 않고

Tv.volumeDown() 으로 볼륨을 조절하였다.

 

4. Wrapper 클래스의 메소드와 사용법

메소드들은 너무나 다양하여 자주 쓰는 몇 개만 정리하려고 한다.

 

4-1. Wrapper 클래스(1) - Integer

4-1-1. parseInt(String s) 

String a = "5";
int s = Integer.parseInt(a);
System.out.println(s); //5

소스코드와 같이 Integer Wrapper 클래스의 parseInt(String s)는

문자열을 int 값으로 반환해주는 기능을 가지고 있다.

 

4-2-2. parseInt(String s, int radix)

// 16진수를 10진수로 변경하고자 할 때

String s = "5A";
int i = Integer.parseInt(s, 16);
System.out.println(n) // 90

문자열 s에 입력된 값이 몇 진수인지를 radix 자리에 넣어주면

10진수로 변환해서 반환 해주는 것이 parseInt(String s, int radix)이다.

 

// 10진수 값으로 반환해주는 메소드 ( 리턴타입 : int )
public static int parseInt(String s, int radix) { ... }

// 10진수 값을 16진수 값으로 반환해주는 메소드 ( 리턴타입 : String )
public static String toHexString(int i) { ... }

// 10진수 값을 2진수 값으로 반환해주는 메소드 ( 리턴타입 : String )
public static String toBinaryString(int i) { ... }

 

4-2. Wrapper 클래스(2) - String

4-2-1. char charAt(int index)

String s = "Hello";
String n = "0123456";
char c = s.charAt(1); // e
char c2 = n.charAt(1); // 1

: 지정된 위치(index)에 있는 문자 하나(char)를 알려준다.

 

4-2-2. String concat(Strint str)

String s = "Hello";
String s2 = s.concat(" World");
System.out.println(s2) // Hello World

: 문자열(str)을 뒤에 덧붙인다.

 

4-2-3. boolean contains(CharSequence s)

String s = "abcdedfg";
boolean b = s.contains("bc"); // true

: 지정된 문자가 문자열(s)에 포함 되었는지 검사한다.

 

4-2-4. boolean equals(Object obj)

String s = "Hello";
boolean b = s.equals("Hello"); // true
boolean b2 = s.equals("hello"); // false

: 매개변수로 받은 문자열(obj)과 String인스턴스의 문자열을 비교한다.

obj가 String이 아니거나 문자열이 다르면 false를 반환한다.

※ 대소문자 구분없이 비교하려면 equalsIgnoreCase()를 사용하면 된다.

 

4-2-5. int indexOf(String str)

String s = "Hello";
int idx1 = s.indexOf('o'); // 4
int idx2 = s.indexOf('k'); // -1

: 주어진 문자열이 존재하는지 앞에서부터 확인하여 위치(index)를 알려준다.

못 찾으면 -1을 반환한다.

※ 끝에서부터 확인하려면 lastIndexOf()를 사용하면 된다.

 

4-2-6. String replace(char old, char nw)

String s = "Hello";
String s1 = s.replace('H', 'C'); // Cello

: 문자열 중의 문자(old)를 새로운 문자(nw)로 바꾼 문자열을 반환한다.

 

4-2-7. String[] split(String regex)

String str14 = "홍길동-24-2001/10/13-서울시";
String[] split = str14.split("-");
System.out.println(split.length);
		
for(int j=0; j<split.length; j++) {
	System.out.println(split[j]);
}

// [홍길동, 24, 2001/10/13, 서울시]

: regex에 있는 문자열을 기준으로 지정된 문자열을 잘라서 배열 타입으로 반환한다.

댓글