String, StringBuilder, StringBuffer를 파악해야 합니다.
String, StringBuilder 및 StringBuffer의 세 가지 클래스 간의 관계와 차이점은 항상 Java에서 고전적인 문제였습니다. 이번에는 이 세 가지 클래스에 대한 지식에 대해 이야기하겠습니다.
1. 간단한 비교
-
문자열: 문자 상수
StringBuilder: 문자 변수
StringBuffer: 문자 변수
String은 상수 유형이며 최종 클래스로 선언되므로 모든 속성도 최종 유형이므로 String 개체가 생성되면 이를 수 없습니다.
두 클래스 StringBuilder / StringBuffer는 변수 유형이며 변경될 수 있습니다. 둘 다 문자열 접합으로 인해 생성되는 중간 객체가 너무 많은 문제를 해결하기 위해 제공되는 클래스입니다. StringBuilder > 제거됨 StringBuffer에는 스레드로부터 안전한 부분이 있으므로 오버헤드가 효과적으로 줄어듭니다. 따라서
2. 문자열의 문자열 처리
예 1: String s = "abcd"; s = s + "fgh";
많은 사람들이 이러한 문자열 처리를 수행할 때 String 유형이 가변이라고 잘못 생각합니다.
그러나 실제로 JVM이 이 코드를 처리하는 과정은 다음과 같습니다. 먼저 s 객체를 생성하고 "abcd" 값을 할당한 다음 두 번째 코드 줄을 처리할 때 또 다른 s 객체를 생성하고 "abcdfgh" 값을 할당합니다. "를 선택한 다음 첫 번째 개체 가비지 수집을 추가합니다. 따라서 첫 번째 s는 변경되지 않고 두 번째 s는 새 객체가 되는 것과 동일합니다
예 2:
String str = “This is only a” + “simple” + “test”;
이 코드는 String str = “This is only a simple test”;<strong></strong>예제 3:
String str2 = "This is only a"; String str3 = "simple"; String str4 = "test"; String str1 = str2 +str3 + str4;
이 코드도 예 1
Three의 프로세스에 따라 처리됩니다. StringBuilder / StringBuffer 구성 특성
이 두 개체의 구성 과정에서 먼저 기본값에 따라 하나를 적용합니다. size 문자 배열(char[]), 기본 용량은 16자이지만 이를 초과하는 경우 Arrays.copyOf()를 사용하여 용량을 16, 32, 64, 128...로 두 배로 늘립니다. 물론 이는 영향을 미칩니다.
//默认 16 个字符 public StringBuilder() { super(16); } //构造函数定义容量 public StringBuilder(int capacity) { super(capacity); }
4. 문자열 접합 처리 시 String과 StringBuilder 비교
우리 모두는 문자열 접합 작업에 StringBuilder가 권장된다는 것을 알고 있지만 항상 사용하는 것이 좋습니다. 문자열 대신 StringBuilder? 분명히 그렇지 않습니다.
예제 1:
String str = "123"; String str1 = str + "456"; String str2 = new StringBuilder().append(str).append("def").toString();
String str = “This is only a simple test”;
例三:
String str = ""; for (int i = 0; i < 1000; i++) { str += "12345"; } StringBuilder stringBuilder = new StringBuilder(); for (int i = 0; i < 1000; i++) { stringBuilder.append("12345"); }
这段代码同样会按照例一的过程来处理
三. StringBuilder / StringBuffer 构造特性
这两个对象在构造的过程中,首先按照默认大小申请一个字符数组(char[]), 默认容量为 16 个字符,但如果超出,会使用 Arrays.copyOf() 成倍扩容 16,32,64, 128...,当然这样会影响性能,因此可以在创建对象时按照需要自定义其容量
String str1 = "123" + "456" + "789"; String str2 = new StringBuilder("123").append("456").append("789").toString();
四. String 与 StringBuilder 处理字符串拼接对比
我们都知道,进行字符串拼接操作时推荐使用 StringBuilder,但是是不是什么时候都推荐使用 StringBuilder 来代替 String 进行字符串拼接?显然不是的。
例一:
rrreee在这种情况下,两种处理方式效率差别不大
在 JDK 8 中, String 的字符串拼接操作会被编译器自动转换为 StringBuilder 并调用 append 方法,由于这样的优化方案,使得两个类在这种情况下的处理效率差别不大;而在 JDK 9 中,为了更加统一字符串操作优化,提供了 StringConcatFactory,作为一个统一的入口,更加优化了字符串拼接操作。
例二:
rrreee这种情况下,StringBuilder 更快
在循环中,每执行一次 “+”,都会创建一个 String 对象,因此会有大量对象创建和回收的消耗。
简单来说,在循环中对同一个字符串对象做字符串拼接,优先选择 StringBuilder
例三
rrreee这种情况下,String 更快
我们都知道 String str1 = "123" + "456" + "789";
其实是等同于 String str1 = "123456789";
이 경우 두 처리 방법의 효율성 차이는 거의 없습니다
예제 3
rrreee🎜🎜이 경우 String이 더 빠릅니다🎜🎜🎜us 우리 모두는String str1 = "123" + "456" + "789";
는 실제로 String str1 = "123456789";
와 동일하지만 StringBuilder에서는 추가 메서드를 여러 번 호출해야 합니다. 🎜위 내용은 String, StringBuilder, StringBuffer를 파악해야 합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

이 기사에서는 Java 프로젝트 관리, 구축 자동화 및 종속성 해상도에 Maven 및 Gradle을 사용하여 접근 방식과 최적화 전략을 비교합니다.

이 기사에서는 Maven 및 Gradle과 같은 도구를 사용하여 적절한 버전 및 종속성 관리로 사용자 정의 Java 라이브러리 (JAR Files)를 작성하고 사용하는 것에 대해 설명합니다.

이 기사는 카페인 및 구아바 캐시를 사용하여 자바에서 다단계 캐싱을 구현하여 응용 프로그램 성능을 향상시키는 것에 대해 설명합니다. 구성 및 퇴거 정책 관리 Best Pra와 함께 설정, 통합 및 성능 이점을 다룹니다.

이 기사는 캐싱 및 게으른 하중과 같은 고급 기능을 사용하여 객체 관계 매핑에 JPA를 사용하는 것에 대해 설명합니다. 잠재적 인 함정을 강조하면서 성능을 최적화하기위한 설정, 엔티티 매핑 및 모범 사례를 다룹니다. [159 문자]

Java의 클래스 로딩에는 부트 스트랩, 확장 및 응용 프로그램 클래스 로더가있는 계층 적 시스템을 사용하여 클래스로드, 링크 및 초기화 클래스가 포함됩니다. 학부모 위임 모델은 핵심 클래스가 먼저로드되어 사용자 정의 클래스 LOA에 영향을 미치도록합니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

SublimeText3 Linux 새 버전
SublimeText3 Linux 최신 버전

DVWA
DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

맨티스BT
Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.
