ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Java - String.replace(), String.replaceAll() 차이
    Java 2023. 3. 3. 23:33
    반응형

    자바에서 문자열의 특정 문자를 대치해줄 때 replace() 함수를 사용합니다.

     

    String.replace(), String.replaceAll() 두 함수가 어떤 차이가 있는지 알아보겠습니다.

     

    String test = "ABCCDDD";
    System.out.println(test.replace("C", "D"));
    System.out.println(test.replaceAll("C", "D"));

     

    이러면 코드의 결과는 두개가 동일합니다.

     

    둘다 특정 문자를 대치해주는 함수이므로 결과는 같지만 내부 구현이 다르기 때문에 성능이 차이가 있습니다.

     

     

    String.replace() 함수의 실제 구현 부분입니다.

    public String replace(char oldChar, char newChar) {
        if (oldChar != newChar) {
            String ret = isLatin1() ? StringLatin1.replace(value, oldChar, newChar)
                                    : StringUTF16.replace(value, oldChar, newChar);
            if (ret != null) {
                return ret;
            }
        }
        return this;
    }

     

     

    String.replaceAll() 구현 부분

    public String replaceAll(String regex, String replacement) {
        return Pattern.compile(regex).matcher(this).replaceAll(replacement);
    }

     

    replaceAll()의 경우는 Pattern을 사용하고 있습니다.

     

    정규표현식용 Pattern 인스턴스는 한 번 쓰고 버려져서 곧바로 가비지 컬렉션 대상이 되고,  인스턴스 생성 비용이 높습니다.

     

    그래서 성능이 중요하게 생각되는 경우에는 replaceAll 대신 replace를 쓰는 것이 좋습니다.

     
    반응형

    댓글

Designed by Tistory.