1. 문자열 수정

Java에서 문자열은 불변 객체입니다. 이는 String 클래스를 고도로 최적화하고 모든 곳에서 사용할 수 있도록 하기 위해 수행되었습니다. 예를 들어 HashMap 컬렉션의 키로 사용할 때는 변경 불가능한 유형만 권장됩니다 .

그러나 프로그래머가 클래스를 String변경할 수 있는 것이 더 편리하다고 생각하는 상황이 자주 발생합니다. 그들은 메서드 중 하나가 호출될 때마다 새 하위 문자열을 만들지 않는 클래스를 원합니다.

음, 매우 큰 문자열이 있고 그 끝에 무언가를 자주 추가해야 한다고 가정합니다. 이 경우 문자열 개체를 계속해서 다시 만들고 연결하는 것보다 문자 모음( ArrayList<Character>)이 더 효율적일 수 있습니다.

이것이 바로 Java 언어에 변경 가능한 문자열과 같은 유형이 추가된 이유입니다. 라고 합니다 StringBuilder.

개체 만들기

기존 문자열을 기반으로 객체를 생성하려면 StringBuilder다음과 같은 명령문을 실행해야 합니다.

StringBuilder name = new StringBuilder(string);

빈 가변 문자열을 만들려면 다음과 같은 명령문을 사용해야 합니다.

StringBuilder name = new StringBuilder();

방법 목록

StringBuilder클래스에는 24개의 유용한 메서드가 있습니다. 다음은 가장 중요한 것입니다.

방법 설명
StringBuilder append(obj)
전달된 객체를 문자열로 변환하고 현재 문자열에 추가합니다.
StringBuilder insert(int index, obj)
전달된 객체를 문자열로 변환하고 현재 문자열에 삽입
StringBuilder replace(int start, int end, String str)
start..end 간격으로 지정된 문자열 부분을 전달된 문자열로 바꿉니다.
StringBuilder deleteCharAt(int index)
문자열에서 지정된 인덱스를 가진 문자를 제거합니다.
StringBuilder delete(int start, int end)
문자열에서 지정된 간격 내의 문자를 제거합니다.
int indexOf(String str, int index)
현재 문자열에서 하위 문자열을 검색합니다.
int lastIndexOf(String str, int index)
끝에서 시작하여 현재 문자열에서 하위 문자열을 검색합니다.
char charAt(int index)
전달된 인덱스에 있는 문자열의 문자를 반환합니다.
String substring(int start, int end)
지정된 간격으로 정의된 하위 문자열을 반환합니다.
StringBuilder reverse()
현재 문자열을 뒤집습니다.
void setCharAt(int index, char)
지정된 인덱스의 문자를 전달된 문자로 변경합니다.
int length()
문자열의 길이를 문자로 반환

다음은 각 방법에 대한 간략한 설명입니다.


2. 방법 설명:

문자열에 추가

변경 가능한 문자열( StringBuilder) 에 무언가를 추가하려면 append()메소드를 사용하십시오. 예:

암호 설명
StringBuilder builder = new StringBuilder("Hi");
builder.append("Bye");
builder.append(123);
Hi
HiBye
HiBye123

표준 문자열로 변환

StringBuilder개체를 String 개체로 변환하려면 toString()메서드를 호출하기만 하면 됩니다. 예

암호 산출
StringBuilder builder = new StringBuilder("Hi");
builder.append(123);
String result = builder.toString();
System.out.println(result);
Hi123

캐릭터는 어떻게 삭제하나요?

변경 가능한 문자열에서 문자를 삭제하려면 메서드를 사용해야 합니다 deleteCharAt(). 예:

암호 산출
StringBuilder builder = new StringBuilder("Hello");
builder.deleteCharAt(2);
String result = builder.toString();
System.out.println(result);
Helo

문자열의 일부를 다른 문자열로 바꾸려면 어떻게 해야 합니까?

이를 위한 방법이 있습니다 replace(int begin, int end, String str). 예:

암호 산출
StringBuilder builder = new StringBuilder("Mellow");
builder.replace(2, 5, "Hello!");
String result = builder.toString();
System.out.println(result);
MeHello!w


3. 문자열 작업의 유용한 예

어떻게 문자열을 반전합니까?

이를 위한 특별한 방법이 있습니다 — reverse(); 예:

암호 산출
String str = "Hello";
StringBuilder builder = new StringBuilder(str);
builder.reverse();
String result = builder.toString();
System.out.println(result);
olleH

StringBuffer수업

또 다른 클래스인 StringBuffer가 있습니다. 이 클래스는 StringBuilder클래스와 유사하지만 해당 메서드는 synchronized수정자로 표시됩니다. 이는 StringBuffer객체가 여러 스레드에서 동시에 액세스될 수 있음을 의미합니다.

그러나 .보다 훨씬 느립니다 StringBuilder. Java 멀티스레딩 퀘스트 에서 멀티스레딩을 적극적으로 탐색하기 시작할 때 이 클래스가 필요할 수 있습니다 .