Java에서 문자열 연결
문자열 연결은 두 개 이상의 작은 문자열을 병합하여 최종 문자열을 만드는 작업입니다. 예를 들어, 사람의 이름과 성을 연결하여 전체 이름을 만들 수 있습니다. Java는 문자열을 연결하는 여러 가지 방법을 제공하지만 그 중 가장 쉬운 방법은 + 연산자를 사용하는 것입니다. 있습니다 Java에서 문자열을 연결하는 네 가지 방법 :- 연결 연산자 '+'
- 함수 String.concat()
- StringBuilder
- StringBuffer
연산자로 문자열 연결 +
연산자 '+'을 사용하여 두 개 이상의 문자열을 연결하는 것이 작업을 완료하는 가장 쉬운 방법입니다. 예를 들어 "One" + "Two"는 String 개체 "OneTwo"를 생성합니다. 이 연산자를 사용하여 적어도 두 개의 문자열을 결합할 수 있습니다(예: "ab"+"cde"+fghi"는 "abcdefghi"를 제공하며 문자열 변수를 사용할 수도 있습니다.
이 연산은 컴파일러에 의해 다음과 같이 변환됩니다.
이 연산은 컴파일러에 의해 다음과 같이 변환됩니다.
new StringBuilder().append("string1").append("string2").toString()이 프로그램은 두 문자열을 연결합니다.
public class Concatenation_string {Runtime:
public static void main(String[] args) {
String s1 = "string1";
문자열 s2 = "string2";
문자열 s1s2 = concatenation_strings_java(s1, s2);
System.out.println(s1s2);
}
public static String concatenation_strings_java (문자열 s1, 문자열 s2) {
return s1+s2;
}
}
string1chain2
Concate strings with the String.concat()
이 메서드는 한 String을 다른 String의 끝에 연결합니다. 이 메서드는 해당 메서드를 호출하는 데 사용된 String의 끝과 함께 연결된 메서드에 전달된 String 값을 가진 String을 반환합니다.public String concat(String s)Example:
public class Concatenation_string {Runtime:
public static void main(String[] args) {< br /> 문자열 s = "나는 하나다";
s = s.concat(" 프로그래머");
System.out.println(들);
}
}
저는 프로그래머입니다
'+'연산자와 String.concat()의 차이점
'+' 및 concat() , 우리는 실제 예제로 작업 할 것입니다.a+=b첫째, 의미론에 약간의 차이가 있습니다. a가 null이면 a.concat(b)은 NullPointerException이지만 '+' 명령문 a+=b은 a null입니다. 또한 concat()은 문자열 값만 허용하는 반면 '+' 연산자는 값을 문자열( toString() )입니다. concat() 은 허용합니다.
a.concat(b)
이 코드를 작성하고 출력에서 얻을 수 있는 것을 볼 수 있습니다.
public static void main(String[] args) {런타임에 다음과 같이 표시되어야 합니다:
String s = null;
s = s.concat(" 프로그래머");
System.out.println(들);
}
스레드 "main"의 예외 java.lang.NullPointerException'+':
Concatenation_string.main(Concatenation_string.java:5)
public static void main(String[] args) {다음과 같은 결과가 나와야 합니다:
문자열 s = null;
s = s + 프로그래머;
System.out.println(들);
}
nullprogrammer따라서 앞서 말했듯이 연산자 '+'은 다음과 같습니다.
a = new StringBuilder()
.append(a)
.append(b)
.toString();
문자열을 StringBuffer 및 StringBuilder와 연결
이 연결 방법은 String 개체를 생성하지 않으므로 메모리 및 시간 비용을 줄입니다. 실제로 StringBuffer 대신 StringBuilder는 기능은 동일하지만 동기화가 없으므로 항상 StringBuilder를 사용해야 하므로 더 빠른 작업을 의미합니다. StringBuffer 또는 StringBuilder를 사용하면 아래와 같이 구조화된 코드가 생성됩니다.String result = new StringBuilder(15).append(name).append(" ").append(firstname).toString();StringBuilder를 사용하여 여러 문자열을 연결하는 것이 얼마나 쉬운지 알 수 있습니다. 그러나 StringBuilder 는 최종 문자열의 문자 수와 동일한 용량으로 초기화해야 합니다. 이렇게하면 String을 올바르게 초기화하여 사용할 수없는 메모리가 손실되는 것을 방지하고 CPU 시간을 줄일 수 있습니다.
다음은 StringBuilder 및 StringBuffer와 String을 연결하는 방법을 보여주는 Java 프로그램의 예입니다.
public static void main(String[] args) {출력:
String court ="Court of";
문자열 module_math ="수학";
/* StringBuilder */
문자열 module_res = "networks";
int 길이 = court.length()+module_math.length();
StringBuilder sb = 새로운 StringBuilder(길이);
sb.append(법원).append(module_math);
문자열 res = sb.toString();
System.out.println(res);
/* 스트링 빌더 */
length = court.length()+module_math.length();
StringBuffer sBuffer = 새로운 StringBuffer(길이);
sb.append(" 및").append(court).append(module_res);
해상도 = sb.toString();
System.out.println(res);
}
수학 안뜰
수학 안뜰 및 네트워크 Courtyard
Java에서 문자열 연결 성능
문자열을 연결하는 가장 쉽고 빠른 방법은 '+' 연산자를 사용하는 것입니다. 그리고 두 개의 문자열 만있을 때 매우 잘 작동하지만 수천 개의 문자열을 연결해야하는 경우, 특히 루프 내에서 '+'연산자를 사용하면 성능이 저하됩니다. 성능 저하의 원인은 String 개체에 대한 임시 배치를 만들기 때문입니다. 프로그램에 문자열이 많은 경우 대규모 연결을 위한 가장 좋은 방법은 StringBuilder입니다. 이 통계는 Windows 7 64비트 환경, 4GB RAM이 장착된 Core 2 Duo 프로세서(2.53GHz)에서 작성되었습니다.public static void main(String[] args) {10000 연결 작업에 대한 결과:
int nb_op=10000;
문자열 s="";
이중 t1, t2, 시간;
t1= System.currentTimeMillis();
for(int i = 0 ; i < nb_op; i++)
s += "*";
t2 = System.currentTimeMillis();
시간 = t2-t1;
System.out.println("+: "+시간);
s="";
t1= System.currentTimeMillis();
for(int i = 0 ; i < nb_op; i++)
s.concat("*");
t2 = System.currentTimeMillis();
시간 = t2-t1;
System.out.println("concat: "+시간);
StringBuilder sb=새로운 StringBuilder();
t1= System.currentTimeMillis();
for(int i = 0 ; i < nb_op; i++)
sb.append("*");
t2 = System.currentTimeMillis();
시간 = t2-t1;
System.out.println("StringBuilder: "+시간);
StringBuffer sBuffer=새로운 StringBuffer();
t1= System.currentTimeMillis();
for(int i = 0 ; i < nb_op; i++)
sBuffer.append("*");
t2 = System.currentTimeMillis();
시간 = t2-t1;
System.out.println("StringBuffer: "+시간);
}
+: 180.0
concat: 13.0
StringBuilder: 2.0
StringBuffer: 4.0