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의 예외
GO TO FULL VERSION