Java에서 String Builder를 사용하는 경우
일반적으로 사용하는 것이 바람직하다고 생각됩니다.StringBuilder자바어★★★★★★★★★★★★★★★★★?
' 하다.는, 「」의 입니까.StringBuilder, " "append() 및 으로 "Method", "method", "Method"toString()보다 더 .+2개의 스트링에 대한 연산자 또는 (2개 이상의) 스트링에 대해서만 연산자가 권장됩니까?
이러한 임계값이 존재하는 경우, 그 임계값은 무엇에 따라 달라집니까(문자열 길이일 가능성이 있습니다만, 어느 쪽인가)?
그리고 마지막으로, 가독성과 간결성을 교환해 주시겠습니까?+「」의 StringBuilder2번, 3번, 4번?
「 」의 StringBuilder정기적인 연결은 Java 도시 신화뿐만 아니라 오래된 Java 최적화 힌트에서도 사용되지 않는 것으로 언급되고 있습니다.
String concatenation을 루프에 사용하면 이런 식으로 되어 있습니다.
String s = "";
for (int i = 0; i < 100; i++) {
s += ", " + i;
}
'A'를 해야 합니다.StringBuilder)StringBuffer대신 )를 사용합니다.String훨씬 빠르고 메모리 소비량이 적기 때문입니다.
진술이 하나라도 있다면
String s = "1, " + "2, " + "3, " + "4, " ...;
하면 .String가 s를 사용하기 입니다. 컴파일러는 를 사용합니다.StringBuilder자동으로.
랄프의 대답은 환상적이다.String Builder 클래스는 Builder 패턴에 가깝기 때문에 String Builder 클래스를 사용하여 String을 빌드/장식하는 것이 좋습니다.
public String decorateTheString(String orgStr){
StringBuilder builder = new StringBuilder();
builder.append(orgStr);
builder.deleteCharAt(orgStr.length()-1);
builder.insert(0,builder.hashCode());
return builder.toString();
}
String 자체를 빌드하는 것이 아니라 String을 빌드하는 도우미/빌더로 사용할 수 있습니다.
일반적으로 읽기 쉬운 코드를 항상 사용하고 성능이 문제가 되는 경우에만 리팩터를 사용합니다.이 경우 최신 JDK는 어떤 경우에도 코드를 String Builder 버전으로 최적화합니다.
루프나 컴파일러가 쉽게 최적화할 수 없는 복잡한 코드로 문자열 연결을 수행할 경우 보통 수동으로만 하면 됩니다.
http://www.javaspecialists.eu/archive/Issue068.html 및 http://www.javaspecialists.eu/archive/Issue105.html 를 참조해 주세요.
이 JDK를 사용하여 어떤 유형의 더 잘 합니다.String또는 을 사용하여 더 나은StringBuilder.
일부 컴파일러는 문자열 연결을 StringBuilder와 동등한 문자열로 대체할 수 없습니다.컴파일 시간 최적화에 의존하기 전에 소스가 사용하는 컴파일러를 반드시 고려하십시오.
+ 연산자는 다음을 사용합니다.public String concat(String str)내부적으로이 메서드는 두 문자열의 문자를 복사하기 때문에 메모리 요건과 실행 시 복잡성이 두 문자열의 길이에 비례합니다.String Builder가 더 효율적으로 작동합니다.
단, Java 4 컴파일러의 포스트에서 + 오퍼레이터를 사용하는 컨커티네이션코드가 String Builder로 변경되어 있는 것을 여기서 읽었습니다.이것은 전혀 문제가 되지 않을지도 모릅니다.(코드에 의존하면 이 스테이트먼트를 확인하겠습니다!)
2개의 스트링 콘카트가 더 빠를 경우 String Builder가 더 나은 선택일 경우 연결 연산자(+ vs concat)의 설명을 참조하십시오.
String 연결의 문제는 String 객체의 복사와 관련된 모든 비용이 발생한다는 것입니다.String Builder는 스레드 세이프가 아니기 때문에 Java 5 이전에 선호되던 String Buffer보다 속도가 빠릅니다.경험적으로 자주 호출되는 루프에서 문자열 연결을 수행하지 마십시오.수백에 대해 언급하지 않는 한, 여러 곳에서 몇 가지 연결을 수행해도 문제가 없을 것입니다. 물론 이는 성능 요건에 따라 달라집니다.만약 여러분이 실시간 일을 하고 있다면, 여러분은 매우 조심해야 합니다.
Microsoft 인정 자료에서는, 같은 질문에 대응하고 있습니다.에서.NET 월드에서는 String Builder 객체의 오버헤드를 통해 2개의 String 객체의 단순한 연결을 보다 효율적으로 수행할 수 있습니다.Java 문자열도 비슷한 대답을 할 수 있을 것 같습니다.
언급URL : https://stackoverflow.com/questions/4645020/when-to-use-stringbuilder-in-java
'programing' 카테고리의 다른 글
| Vuejs-nuxt(SSR 모드)가 getter 내부 플러그인을 통해 UserUID를 가져올 수 없습니다.GetUserUUID에 대해 정의되지 않은 것으로 표시됨 (0) | 2022.07.23 |
|---|---|
| Firestore는 텍스트 영역의 줄 바꿈을 저장하지 않습니다. (0) | 2022.07.23 |
| 2D 어레이를 1D 어레이에 매핑 (0) | 2022.07.23 |
| VueJ에서 Vuex 액션이 디스패치되었는지 유닛 테스트하는 방법s (0) | 2022.07.23 |
| 조작 가능한 편집이 Vuex 변환 오류를 트리거합니다. (0) | 2022.07.23 |