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에 있는 문자열을 기준으로 지정된 문자열을 잘라서 배열 타입으로 반환한다.
'BACK-END > JAVA' 카테고리의 다른 글
[JAVA] 2진수를 원하는 진수로 변환해서 출력하는 프로그램 (0) | 2022.12.22 |
---|---|
중첩 for문 탈출하기 (0) | 2022.12.22 |
Scanner 그리고 BufferedReader 차이점 (0) | 2022.12.20 |
Map, HashMap (0) | 2022.05.24 |
이클립스 오류 해결하기(1) (0) | 2021.12.09 |
댓글