CodeGym /Java Blog /무작위의 /Java의 문자열 연결
John Squirrels
레벨 41
San Francisco

Java의 문자열 연결

무작위의 그룹에 게시되었습니다
Java 문자열 연결은 둘 이상의 문자열을 결합하고 새 문자열을 반환하는 작업입니다. 또한 연결 연산을 사용하여 유형을 문자열로 캐스트할 수 있습니다. 두 가지 방법으로 Java에서 문자열을 연결할 수 있습니다.

concat() 메서드

Concat() 메서드는 주어진 문자열의 끝에 지정된 문자열을 추가한 다음 반환하고 형성된 새 문자열을 반환합니다. 물론 concat() 메서드를 사용하여 세 개 이상의 문자열을 결합할 수 있습니다.

concat() 메서드 시그니처


public String concat(String str)
이 메서드는 현재 문자열의 끝에서 문자열 str을 연결합니다. 예를 들어:

String s1 = “Hello ”; 
s1.concat("World")
새 문자열 "Hello World"를 반환합니다.

Concat() 메서드 예제

초기화 후 두 개의 문자열을 연결한 다음 더 많은 문자열을 연결해 보겠습니다. 또 하나의 흥미로운 예: 인수에 따라 다른 메시지를 반환하는 메서드를 만들 것입니다.

public class ConcatTest {

    public static void main(String[] args) {
        //String concat with concat() method 
        String string1 = "I learn ";
        String string2 = "concatenation in Java";
        //here we use concat() method to join the two strings above
        String result = string1.concat(string2);
        System.out.println(result);
        //concat() method to join 4 strings
        String myWebSite = "Code".concat("Gym").concat(".cc").concat("/quest");
        System.out.println(myWebSite); // here we've got  "CodeGym.cc/quest"

        System.out.println(myMessage(true));
        System.out.println(myMessage(false));
    }

    private static String myMessage(boolean b) {   //concat() method with selection statement 
        return "I have".concat(b ? " " : "n't ").concat("got it");
    }

}
출력은 다음과 같습니다.
Java CodeGym.cc/quest에서 연결을 배웁니다. 얻었습니다. 얻지 못했습니다.
concat() 메서드는 문자열을 변경하지 않고 현재 문자열과 매개 변수로 전달된 문자열을 병합하여 새 문자열을 생성한다는 점을 아는 것이 중요합니다 . 따라서 메서드는 새로운 String 개체를 반환하므로 긴 String concat 체인을 만들 수 있습니다.

오버로드된 연산자 "+" 및 "+="를 사용한 연결

이 두 연산자는 숫자와 같은 방식으로 사용할 수 있습니다. concat() 처럼 작동합니다 . "Code" 문자열과 "Gym" 문자열을 연결해 봅시다.

public class StringConcat {
   public static void main(String[] args) {

       String myString = "Code" + "Gym";
       myString+= ".cc";
       System.out.println(myString);
   }
}
일반적으로 Java는 사용자 클래스에 대한 오버로드 작업을 허용하지 않지만 이 두 연산자는 오버로드된 상태로 작동합니다. + 연산자 내부에 concat() 이 숨겨져 있다고 생각할 수 있지만 실제로는 다른 메커니즘이 사용됩니다. Java 프로그램 바이트 코드를 보면 StringBuilder가 생성되었고 해당 append() 메서드가 사용된 것을 볼 수 있습니다. Java Compiler는 "+" 연산자를 보고 피연산자가 기본 유형이 아닌 문자열임을 인식합니다. 따라서 concat처럼 작동합니다.

public class StringTest2 {

   public static void main(String[] args) {

       String hello = "hello";
       String world = " world!";

       String helloworld = (new StringBuilder().append(hello).append(world).toString());
       System.out.println(helloworld);
       //this is the same as:
       String result = hello + world;
   }
}

연결(0) 또는 + ?

문자열을 한 번만 병합해야 하는 경우 concat() 메서드를 사용합니다. 다른 모든 경우에는 + 또는 Stringbuffer / StringBuilder 연산자를 사용하는 것이 좋습니다 . 또한 + 연산자는 유형을 변환하는 데 사용됩니다. 예를 들어 피연산자 중 하나가 숫자이고 두 번째가 문자열이면 종료시 문자열을 얻습니다. 예:

public class StringConcat {
   public static void main(String[] args) {
       int myInt = 5;
       String myString = " days";

       System.out.println(myInt + myString);
       boolean b = (myInt + myString) instanceof String;
       System.out.println(b);
   }
}
instanceof를 사용하여 (myInt + myString) 이 문자열 인지 확인했습니다 . 다음은 이 프로그램의 출력입니다.
5일 참
또한 + 연산자와 concat()은 문자열 중 하나가 null인 경우 다르게 작동합니다. + 또는 += 연산자를 사용할 때 피연산자 중 하나 가 문자열이면 이미 말했듯이 유형 변환이 발생합니다. null에도 동일하게 적용됩니다. 새 문자열을 얻습니다.

public class StringConcat {
   public static void main(String[] args) {

       String myString = "book ";
       System.out.println(myString + null);
       System.out.println((myString + null) instanceof String);
   }
}
출력은 다음과 같습니다.
도서 null 참
동일한 작업에 concat() 메서드를 적용하면 NullPointerException 이 발생합니다 .

public class StringConcat {
   public static void main(String[] args) {

       String myString = "book ";
       System.out.println(myString.concat(null));

   }
}
출력은 다음과 같습니다.
StringConcat.main(StringConcat.java:6)의 java.base/java.lang.String.concat(String.java:1972) 스레드 "main" java.lang.NullPointerException의 예외
코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION