Img profile default
조인영
  • 2016.6.26 16:51
  • 조회수 416
  • 답변수 1
Img profile default
조인영
  • 2016.6.26 16:51
  • 조회수 416
  • 답변수 1

concat 과 + 연산자의 차이

제목 그대로 concat 과 + 연산자의 차이에 대해 알고 싶습니다.
보여지는 결과는 같은데 각 메소드와 연산자가 구동하는 과정에 어떤 차이가 있나요?

StringExam.java
public class StringExam{
    public static void main(String[] args) {
        String str1 = "안녕하세요. ";
        String str2 = "벌써 여기까지 오셨네요. 끝까지 화이팅!!";

        String concatResult ;
        String substringResult;

        //아래쪽에 코드를 작성하세요.
        concatResult = str1 + str2;
        substringResult = str1.substring(2);


        //이 아래는 정답 확인을 위한 코드입니다. 수정하지 마세요.
        System.out.println(concatResult);
        System.out.println(substringResult);
    }

}
  • #자바 입문
  • #String클래스의 메소드 - 실습

1 답변

  • Spgjnhnsidwygch8ddkd
    Chandler
    • 2016.6.29 01:00

    + 연산자는 concat과 완전 다른 동작 방식인데요.
    concat은 합친 문자열을 new String으로 생성합니다.
    + 연산자는 아래 코드와 같이 StringBuilder 클래스로 변환하여 append로 문자열을 더해준 뒤 toString()으로 결과값을 변환하여 넘겨줍니다.

    (new StringBuilder(String.valueOf(str1)).append(str2).toString(); // +연산자 실제 동작방식
    

    두 방식의 차이를 간단하게 설명 하자면
    String 클래스에서 문자열을 더할 경우(concat method)

    주소
    1000 "try"
    2000 "tryHello"
    3000 "tryHelloWorld"

    문자열을 더할 때마다 주소를 새로 할당하여 생성합니다.

    그러나 StringBuilder클래스에서 문자열을 더할 경우(+ 연산자)

    주소
    1000 "try"
    1000 "tryHello"
    1000 "tryHelloWorld"

    위와 같이 같은 주소에 문자열을 추가를 하는 방식입니다.

    따라서 2개의 문자열을 합칠 경우 concat을 사용하고, str1 + str2 + str3 + ...과 같이 여러 문자열을 합칠 경우 +연산자를 사용하면 좋습니다.

    String과 StringBuilder에 대해서 공부하시면 이해하기 쉬울 것 같네요.
    더 궁금하신 점이 있다면 댓글 남겨주세요 :)

답변 쓰기

이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.