본문 바로가기
Java의 정석/java.lang 패키지 & 유용한 클래스

StringJoiner, 문자열과 기본형 변환

by Hwanii_ 2023. 9. 1.
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 ]

 

 

반응형