728x90
ch9 12 ~ 14
StringJoiner, 문자열과 기본형 변환
ch9 - 12 join() 과 StringJoiner
- join() 메서드는 여러 문자열 사이에 구분자를 넣어서 결합 한다.
(static 메서드 이다)
예시 )
String animals = "dog,cat,bear";
String[] arr = animal.split(","); // 문자열을 ',' (콤마) 를 구분자로 나눠서 배열에 저장.
String str = String.join("-", arr); // 배열의 문자열을 '-' (하이픈) 으로 구분해서 결합.
System.out.println(str); // dog-cat-bear
// ("dog" + "-" + "cat" + "-" + "bear")
예시 01 )
import java.util.StringJoiner;
class Ex9_9 {
public static void main(String[] args) {
String animals = "dog,cat,bear";
String[] arr = animals.split(",");
System.out.println(String.join("-", arr));
StringJoiner sj = new StringJoiner("/", "[", "]");
for (String s : arr)
sj.add(s);
System.out.println(sj.toString());
}
}
split() 메서드를 사용 해서, 배열 arr 에 문자열을 저장 한다.
어떻게 ?
, (쉼표) 를 구분자로 해서 !
그리고, join() 메서드를 사용 하는것을 확인 할 수 있는데,
배열의 문자열을 - (하이픈) 으로 구분해서 문자열을 결합 한다.
그리고, StringJoiner 클래스를 사용 해서,
/ (슬래시) 를 구분자로 하고, 문자열의 접두사와 접미사를 설정 할 수 있다.
arr 배열 안에 있는 문자열을 for 문을 통해 하나하나씩 꺼내서,
참조변수 sj에 문자열을 더한다.
[ console ]

[ 참고 ]



ch9 - 13 문자열과 기본형 간의 변환
- 숫자를 문자열로 바꾸는 방법
int i = 100;
String str1 = i + ""; // 숫자 100을 "100" 으로 변환 하는 방법 1
String str2 = String.valueOf(i); // 숫자 100을 "100" 으로 변환 하는 방법 2
1번 방법은 간단하고 쉽다.
2번 방법은 속도가 빠르지만, 메서드를 사용하니까, 살짝 번거롭다.
코드는 간단하고 쉽게 짜는게 좋으니까 1번으로 하고,
속도가 중요한 경우에는 2번으로 하면 될듯 하다.
- 문자열을 숫자로 바꾸는 방법
int i = Integer.parseInt("100"); // "100" 을 100 으로 변환 하는 방법 1
int i2 = Integer.valueOf("100"); // "100" 을 100 으로 변환 하는 방법 2
Integer i2 = Integer.valueOf("100"); // 원래는 반환 타입이 Integer
[ 참고 ]
기본형 -> 문자열
String
String.valueOf(boolean b)
String
String.valueOf(char c)
String
String.valueOf(int i)
String
String.valueOf(long l)
String
String.valueOf(float f)
String
String.valueOf(double d)
문자열 -> 기본형
boolean
Boolean.parseBoolean(String s)
byte
Boolean.parseByte(String s)
short
Boolean.parseShort(String s)
int
Boolean.parseInt(String s)
long
Boolean.parseLong(String s)
float
Boolean.parseFloat(String s)
double
Boolean.parseDouble(String s)
parseXxx 가 전부 타입에 따라 달라서,
사용이 불편 하기 때문에, 이렇게 잘 하지 않는다. (Old 방식)
그래서 아래와 같이 사용 한다. (New 방식)
Boolean.valueOf(String s)
Byte.valueOf(String s)
Short.valueOf(String s)
Integer.valueOf(String s)
Long.valueOf(String s)
Float.valueOf(String s)
Double.valueOf(String s)
++
원래는 valueOf() 메서드의 반환이 참조형 (래퍼 클래스) 이다.
그런데, 원시타입 으로 반환값을 받아도 되긴 한다.
왜냐하면, 오토박싱 이라는 개념이 있어서 그렇다.
참조형 (래퍼 클래스) 을 자동으로 원시타입으로 변환 해준다.
[ 결론 ]
기본형 -> 문자열
문자열 -> 기본형
모두 valueOf() 메서드를 사용 하면 된다.
예시 02 )
class Ex9_10 {
public static void main(String[] args) {
int iVal = 100;
// String strVal = String.valueOf(iVal); // int를 String 으로 변환.
String strVal = iVal + "";
// valueOf() 메서드보다 속도가 느리지만, 특별한 경우가 아니면 그냥 이렇게 사용 하는게 가독성이 좋다.
double dVal = 200.0;
String strVal2 = dVal + ""; // double을 String 으로 변환 하는 또 다른 방법.
double sum = Integer.parseInt("+" + strVal) + Double.parseDouble(strVal2); // old 방식.
double sum2 = Integer.valueOf(strVal) + Double.valueOf(strVal2); // new 방식.
System.out.println(String.join("", strVal, "+", strVal2, "=") + sum);
// join() 메서드를 사용해서 문자열을 결합한 모습 이다.
// 구분자를 "" (빈값) 으로 해서, 그냥 붙히는 모습 이다.
System.out.println(strVal + "+" + strVal2 + "=" + sum2);
// 개념
// String.join() 메서드를 사용 하지 않고,
// 위와 같이, 문자열을 결합 하면, 객체를 계속 만드는 것이다.
// 여러 문자열을 위와 같이 결합 하는 방법은, 성능이 저하 될 수 있다.
// 그래서, 문자열 결합의 양이 많다면,
// String.join() 메서드를 사용 하면 좋다.
// 내부적으로 StringBuffer을 사용해서 좀 더 속도를 향상시키도록 되어 있다.
}
}
[ console ]

반응형
'Java의 정석 > java.lang 패키지 & 유용한 클래스' 카테고리의 다른 글
StringBuffer 클래스의 메서드 (0) | 2023.09.02 |
---|---|
StringBuffer 클래스 (문자열 저장 & 다루기) (0) | 2023.09.01 |
String 클래스, 문자열 비교, 빈 문자열 (0) | 2023.08.31 |
hashCode() 메서드, toString() 메서드 (0) | 2023.08.30 |
Object 클래스, equals() 메서드 (0) | 2023.08.30 |