"안녕, 아미고!"

"하지만 Bilaabo, 당신은 이미 인사했습니다."

"정말요? 글쎄요, 저는 여전히 그 문구로 매 수업을 시작하는 것을 좋아합니다."

"오늘 우리는 String 클래스를 깊이 있게 공부할 것입니다."

"하지만 나는 이미 그것에 대해 모든 것을 알고 있습니다. 심지어 String 클래스가 불변이라는 것도 알고 있습니다."

"String 클래스에는 46개의 메서드가 있습니다. 그중 몇 개를 알고 있습니까?"

"10개도 안 돼. 사실 최대 5개 정도야."

"그럼 잘 들어."

"Java의 제작자는 프로그램에 있는 대부분의 문자열이 수정되도록 의도된 것이 아니라는 사실을 알아차렸습니다. 그러나 때때로 문자열이 수정되기도 합니다. 문자열을 만들고 중요한 것을 저장하고 다른 사람의 메서드에 전달한 다음 변경될 때 매우 성가신 일입니다. . 이러한 일이 발생하지 않도록 그들은 변경 가능한 문자열과 변경 불가능한 문자열을 모두 만들기로 결정했습니다."

"String 클래스는 변경할 수 없는 문자열을 위한 것이고 StringBuilder 클래스는 변경할 수 있는 문자열을 위한 것입니다. 이러한 클래스의 개체는 다른 유형으로 쉽게 변환됩니다. 대부분의 경우 Java 개발자는 단순히 String이 필요하며 이는 Java 작성자가 옳았다는 것을 증명합니다."

"그래서 문자열이 필요하면 String 클래스를 사용하고 변경 가능한 문자열이 필요하면 StringBuilder 클래스 를 사용합니까 ?"

"예. 실제로 StringBuffer라는 또 다른 클래스가 있습니다. StringBuilder의 복사본입니다. 모든 메서드가 synchronized 로 선언되어 프로그램의 다른 스레드에서 개체에 액세스할 수 있다는 점만 다릅니다."

"그리고 이 예는 어떻습니까? 여기서 문자열이 변경되지 않습니까?"

String s = "cat";
s = s + "-" + s;

"아니요. 여기에는 «cat»과 «cat-cat»이라는 두 개의 String 개체가 있습니다. 두 번째 개체는 첫 번째 개체를 사용하여 생성되지만 첫 번째 개체는 변경되지 않습니다. 실제로는 여기가 훨씬 더 흥미로워요. 여기 코드가 있습니다. 컴파일러는 예제를 컴파일할 때 다음을 생성합니다."

String s = "cat";
StrinsBuilder s2 = new StringBuilder(s);
s2.append("-");
s2.append(s);
s = s2.toString();

"따라서 StringBuilder는 거의 항상 새 문자열을 만드는 데 사용되지만 때로는 컴파일러가 모든 작업을 대신 수행합니다. 하지만 버전이 더 간단하다고 생각하지 않습니까?"

"예, Java에 이렇게 고급 컴파일러가 있다는 것이 놀랍습니다."

"자, 이제 String 클래스의 메서드를 살펴보겠습니다."

1) 문자열의 길이는 어떻게 찾습니까?

" 길이 메서드는 문자열의 길이(문자 수)를 반환합니다."

행동 양식)
int length();
String s = "Good news, everyone!";
int n = s.length();
int n = "Good news, everyone!".length();

2) 문자열에서 문자를 어떻게 얻습니까?

" charAt 메서드는 인덱스로 문자열에서 문자를 반환합니다. 문자 인덱스는 0부터 시작합니다.

행동 양식)
char charAt(int index)
String s = "Good news, everyone!";
char n = s.charAt(5);
char n = "Good news, everyone!".charAt(5);

3) 문자열에서 문자를 어떻게 얻습니까?

문자열에서 문자를 가져오려면 어떻게 해야 합니까?

행동 양식)
char[]toCharArray ()
String s = "Good news, everyone!";
for(char c: s.toCharArray())
{
System.out.println(c);
}

4) 문자열을 어떻게 비교합니까?

"equals 메서드는 문자열이 일치하는지 확인하고 equalsIgnoreCase 메서드는 대소문자가 무시될 때 문자열이 일치하는지 확인합니다.

행동 양식) 행동 양식)
boolean equals(Object o)
String s = "cat";
boolean test1 = s.equals("cat");//true
boolean test2 = s.equals("Cat");//false
boolean test3 = s.equals("c"+"a"+"t");//true
boolean equalsIgnoreCase(String str)
String s = "cat";
boolean test1 = s.equalsIgnoreCase("cat");//true
boolean test2 = s.equalsIgnoreCase("Cat");//true
boolean test3 = s.equalsIgnoreCase("cAT");//true

5) 문자열의 모든 문자를 대문자 또는 소문자로 만들려면 어떻게 해야 합니까?

" toUpperCase 메서드는 모두 대문자로 된 문자열의 복사본을 반환합니다."

" toLowerCase 메서드는 모두 소문자로 된 문자열의 복사본을 반환합니다."

행동 양식)
String toUpperCase()
String s = " Good news, everyone!  ";
s = s.toUpperCase();

결과:

s == "GOOD NEWS, EVERYONE!";
String toLowerCase()
String s = "Good news, everyone!";
s = s.toLowerCase();

결과:

s == "good news, everyone!";

6) 문자열의 처음과 끝에 있는 공백을 어떻게 제거합니까?

"트림 메서드는 시작과 끝에 공백 문자가 없는 문자열의 복사본을 반환합니다."

행동 양식)
String trim()
String s = "   Good news, everyone!   ";
s = s.trim();

결과:

s == "Good news, everyone!";