λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
μΉ΄ν…Œκ³ λ¦¬ μ—†μŒ

string 클래슀 (λ¬Έμžμ—΄ 닀루기) μ‚¬μš©λ²• & 예제 총정리

by 5566 2023. 10. 14.

1. λ¬Έμžμ—΄ λ‹€λ£¨κΈ°μ˜ μ€‘μš”μ„± μ΄ν•΄ν•˜κΈ°

λ¬Έμžμ—΄μ€ ν”„λ‘œκ·Έλž˜λ°μ—μ„œ λΉˆλ²ˆν•˜κ²Œ μ‚¬μš©λ˜λŠ” 데이터 νƒ€μž… 쀑 ν•˜λ‚˜μž…λ‹ˆλ‹€. λ¬Έμžμ—΄μ€ ν…μŠ€νŠΈ 데이터λ₯Ό ν‘œν˜„ν•˜λ©°, 우리 일상 μƒν™œμ—μ„œλ„ 많이 μ ‘ν•˜λŠ” ν˜•νƒœμž…λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, μ‚¬μš©μžλ‘œλΆ€ν„° μž…λ ₯λ°›λŠ” 정보, 파일의 λ‚΄μš©μ„ μ €μž₯ν•˜λŠ” 것 λ“± λ‹€μ–‘ν•œ μƒν™©μ—μ„œ λ¬Έμžμ—΄μ„ λ‹€λ£¨κ²Œ λ©λ‹ˆλ‹€.

λ¬Έμžμ—΄μ„ μ˜¬λ°”λ₯΄κ²Œ λ‹€λ£¨λŠ” 것은 ν”„λ‘œκ·Έλž¨μ˜ μ„±λŠ₯κ³Ό μ‚¬μš©μž κ²½ν—˜μ— 큰 영ν–₯을 λ―ΈμΉ©λ‹ˆλ‹€. λ¬Έμžμ—΄μ„ 닀루기 μœ„ν•΄μ„œλŠ” λ¬Έμžμ—΄μ„ μ‘°μž‘ν•˜κ³  κ²€μƒ‰ν•˜λ©°, ν•„μš”ν•œ 정보λ₯Ό μΆ”μΆœν•˜λŠ” λ“± λ‹€μ–‘ν•œ μž‘μ—…μ„ μˆ˜ν–‰ν•  수 μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€. 이λ₯Ό μœ„ν•΄μ„œλŠ” λ¬Έμžμ—΄ 닀루기에 λŒ€ν•œ 이해와 μ μ ˆν•œ κΈ°μˆ μ„ μŠ΅λ“ν•˜λŠ” 것이 μ€‘μš”ν•©λ‹ˆλ‹€.

이번 κΈ€μ—μ„œλŠ” λ¬Έμžμ—΄ 닀루기λ₯Ό μœ„ν•΄ μžλ°”μ—μ„œ μ œκ³΅ν•˜λŠ” String 클래슀λ₯Ό μ†Œκ°œν•˜κ³ , μ£Όμš” λ©”μ„œλ“œμ™€ μ‚¬μš© 예제λ₯Ό μ‚΄νŽ΄λ³΄κ² μŠ΅λ‹ˆλ‹€. λ˜ν•œ, λ¬Έμžμ—΄ 닀루기에 μœ μš©ν•œ 팁과 μ£Όμ˜μ‚¬ν•­μ— λŒ€ν•΄μ„œλ„ μ•Œμ•„λ³Ό κ²ƒμž…λ‹ˆλ‹€. 이λ₯Ό 톡해 λ¬Έμžμ—΄μ„ 효과적으둜 닀루고 ν”„λ‘œκ·Έλž˜λ°μ— μœ μš©ν•˜κ²Œ ν™œμš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

2. String 클래슀 μ†Œκ°œ

μžλ°”μ—μ„œ λ¬Έμžμ—΄μ„ 닀루기 μœ„ν•΄μ„œλŠ” String 클래슀λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€. String은 μžλ°”μ—μ„œ 기본적으둜 μ œκ³΅λ˜λŠ” 클래슀둜, λ¬Έμžμ—΄μ„ ν‘œν˜„ν•˜κ³  μ‘°μž‘ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€. String ν΄λž˜μŠ€λŠ” λΆˆλ³€(immutable)μ΄λ―€λ‘œ ν•œ 번 μƒμ„±λœ λ¬Έμžμ—΄μ€ λ³€κ²½ν•  수 μ—†μŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ―€λ‘œ λ¬Έμžμ—΄μ„ μ‘°μž‘ν•˜κ³  μˆ˜μ •ν•˜λŠ” μž‘μ—…μ€ 항상 μƒˆλ‘œμš΄ λ¬Έμžμ—΄μ„ λ°˜ν™˜ν•©λ‹ˆλ‹€.

String ν΄λž˜μŠ€λŠ” μžλ°”μ˜ λ‚΄μž₯ λ©”μ„œλ“œλ₯Ό 톡해 λ‹€μ–‘ν•œ λ¬Έμžμ—΄ 연산을 μ œκ³΅ν•©λ‹ˆλ‹€. 이λ₯Ό 톡해 λ¬Έμžμ—΄ 비ꡐ, 검색, μΆ”μΆœ, 병합, 뢄리 λ“±μ˜ μž‘μ—…μ„ μˆ˜ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ˜ν•œ, λ¬Έμžμ—΄μ˜ 길이λ₯Ό μ•Œ 수 있고, λ¬Έμžμ—΄μ„ λŒ€/μ†Œλ¬Έμžλ‘œ λ³€ν™˜ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.

String 클래슀의 κ°μ²΄λŠ” μƒμ„±λœ 후에도 λ‚΄μš©λ¬Όμ„ λ³€κ²½ν•  수 μ—†μœΌλ―€λ‘œ λ¬Έμžμ—΄ μ‘°μž‘μ˜ κ²°κ³ΌλŠ” 항상 μƒˆλ‘œμš΄ λ¬Έμžμ—΄μ„ λ°˜ν™˜ν•˜λŠ” 것에 μœ μ˜ν•΄μ•Ό ν•©λ‹ˆλ‹€. μ΄λŸ¬ν•œ νŠΉμ„±μ€ λ¬Έμžμ—΄μ˜ μ•ˆμ •μ„±μ„ 보μž₯ν•˜κ³  μ˜ˆμƒμΉ˜ λͺ»ν•œ 버그λ₯Ό λ°©μ§€ν•˜λŠ” 데에 도움을 μ€λ‹ˆλ‹€.

μžλ°”μ—μ„œ λ¬Έμžμ—΄μ„ λ‹€λ£° λ•ŒλŠ” String 클래슀의 λ©”μ„œλ“œλ₯Ό 적절히 ν™œμš©ν•˜μ—¬ μ›ν•˜λŠ” μž‘μ—…μ„ μˆ˜ν–‰ν•˜λŠ” 것이 μ€‘μš”ν•©λ‹ˆλ‹€. λ‹€μŒ λ‹¨λ½μ—μ„œλŠ” String 클래슀의 μ£Όμš” λ©”μ„œλ“œμ— λŒ€ν•΄ μžμ„Ένžˆ μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€.

3. String 클래슀의 μ£Όμš” λ©”μ„œλ“œ

String ν΄λž˜μŠ€λŠ” λ‹€μ–‘ν•œ λ¬Έμžμ—΄ 연산을 μ œκ³΅ν•˜μ—¬ λ¬Έμžμ—΄μ„ λ‹€λ£° 수 있게 ν•΄μ€λ‹ˆλ‹€. μ—¬κΈ°μ—μ„œλŠ” λͺ‡ 가지 μ£Όμš”ν•œ λ©”μ„œλ“œλ₯Ό μ‚΄νŽ΄λ³΄κ² μŠ΅λ‹ˆλ‹€.

3.1. length()

length() λ©”μ„œλ“œλŠ” λ¬Έμžμ—΄μ˜ 길이λ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, λ‹€μŒκ³Ό 같이 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€:

String str = "Hello World";
int length = str.length(); // 11

3.2. charAt(int index)

charAt(int index) λ©”μ„œλ“œλŠ” μ§€μ •λœ μΈλ±μŠ€μ— ν•΄λ‹Ήν•˜λŠ” 문자λ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€. μΈλ±μŠ€λŠ” 0λΆ€ν„° μ‹œμž‘ν•˜λ©°, λ¬Έμžμ—΄μ˜ 끝을 λ‚˜νƒ€λ‚΄λŠ” μΈλ±μŠ€λŠ” length() - 1μž…λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄:

String str = "Hello World";
char firstChar = str.charAt(0); // 'H'
char lastChar = str.charAt(str.length() - 1); // 'd'

3.3. substring(int beginIndex, int endIndex)

substring(int beginIndex, int endIndex) λ©”μ„œλ“œλŠ” 주어진 λ²”μœ„μ— ν•΄λ‹Ήν•˜λŠ” λ¬Έμžμ—΄μ„ λ°˜ν™˜ν•©λ‹ˆλ‹€. beginIndexλŠ” ν¬ν•¨λ˜κ³ , endIndexλŠ” ν¬ν•¨λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄:

String str = "Hello World";
String sub = str.substring(0, 5); // "Hello"

3.4. indexOf(String str)

indexOf(String str) λ©”μ„œλ“œλŠ” 주어진 λ¬Έμžμ—΄μ΄ 처음으둜 λ“±μž₯ν•˜λŠ” μœ„μΉ˜μ˜ 인덱슀λ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€. ν•΄λ‹Ή λ¬Έμžμ—΄μ΄ μ—†λŠ” κ²½μš°μ—λŠ” -1을 λ°˜ν™˜ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄:

String str = "Hello World";
int index = str.indexOf("World"); // 6
int nonExistingIndex = str.indexOf("Java"); // -1

3.5. replace(char oldChar, char newChar)

replace(char oldChar, char newChar) λ©”μ„œλ“œλŠ” 주어진 λ¬Έμžμ—΄μ—μ„œ νŠΉμ • 문자λ₯Ό λ‹€λ₯Έ 문자둜 λ³€κ²½ν•œ μƒˆλ‘œμš΄ λ¬Έμžμ—΄μ„ λ°˜ν™˜ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄:

String str = "Hello World";
String replacedStr = str.replace('o', 'i'); // "Helli Wirld"

3.6. toUpperCase() / toLowerCase()

toUpperCase() λ©”μ„œλ“œλŠ” λ¬Έμžμ—΄μ„ λͺ¨λ‘ λŒ€λ¬Έμžλ‘œ λ³€ν™˜ν•œ μƒˆλ‘œμš΄ λ¬Έμžμ—΄μ„ λ°˜ν™˜ν•©λ‹ˆλ‹€. toLowerCase() λ©”μ„œλ“œλŠ” λ¬Έμžμ—΄μ„ λͺ¨λ‘ μ†Œλ¬Έμžλ‘œ λ³€ν™˜ν•œ μƒˆλ‘œμš΄ λ¬Έμžμ—΄μ„ λ°˜ν™˜ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄:

String str = "Hello World";
String upperCaseStr = str.toUpperCase(); // "HELLO WORLD"
String lowerCaseStr = str.toLowerCase(); // "hello world"

μœ„μ—μ„œ μ„€λͺ…ν•œ λ©”μ„œλ“œ 외에도 String ν΄λž˜μŠ€λŠ” λ‹€μ–‘ν•œ λ©”μ„œλ“œλ₯Ό μ œκ³΅ν•˜λ©°, 이λ₯Ό ν™œμš©ν•˜μ—¬ λ¬Έμžμ—΄μ„ λ‹€μ–‘ν•˜κ²Œ μ‘°μž‘ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이번 μž₯μ—μ„œλŠ” μ£Όμš” λ©”μ„œλ“œλ§Œμ„ μ†Œκ°œν–ˆμœΌλ‹ˆ, μžμ„Έν•œ λ‚΄μš©μ€ 곡식 λ¬Έμ„œλ₯Ό μ°Έκ³ ν•˜κΈ°λ₯Ό ꢌμž₯ν•©λ‹ˆλ‹€.

4. String 클래슀 μ‚¬μš© 예제

String ν΄λž˜μŠ€λŠ” λ¬Έμžμ—΄μ„ μ‘°μž‘ν•˜κ³  λ‹€λ£¨λŠ” 데에 μœ μš©ν•œ λ‹€μ–‘ν•œ λ©”μ„œλ“œλ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€. λ‹€μŒμ€ String 클래슀의 일뢀 λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•œ μ˜ˆμ œμž…λ‹ˆλ‹€.

4.1. λ¬Έμžμ—΄ 길이 κ΅¬ν•˜κΈ°

String str = "Hello World";
int length = str.length();
System.out.println("λ¬Έμžμ—΄μ˜ 길이: " + length); // 좜λ ₯: "λ¬Έμžμ—΄μ˜ 길이: 11"

4.2. 문자 μΆ”μΆœν•˜κΈ°

String str = "Hello World";
char firstChar = str.charAt(0);
char lastChar = str.charAt(str.length() - 1);
System.out.println("첫 번째 문자: " + firstChar); // 좜λ ₯: "첫 번째 문자: H"
System.out.println("λ§ˆμ§€λ§‰ 문자: " + lastChar); // 좜λ ₯: "λ§ˆμ§€λ§‰ 문자: d"

4.3. λ¬Έμžμ—΄ 자λ₯΄κΈ°

String str = "Hello World";
String sub = str.substring(0, 5);
System.out.println("μΆ”μΆœλœ λ¬Έμžμ—΄: " + sub); // 좜λ ₯: "μΆ”μΆœλœ λ¬Έμžμ—΄: Hello"

4.4. λ¬Έμžμ—΄ κ²€μƒ‰ν•˜κΈ°

String str = "Hello World";
int index = str.indexOf("World");
System.out.println("κ²€μƒ‰λœ μœ„μΉ˜: " + index); // 좜λ ₯: "κ²€μƒ‰λœ μœ„μΉ˜: 6"

4.5. λ¬Έμžμ—΄ λŒ€μ²΄ν•˜κΈ°

String str = "Hello World";
String replacedStr = str.replace('o', 'i');
System.out.println("λŒ€μ²΄λœ λ¬Έμžμ—΄: " + replacedStr); // 좜λ ₯: "λŒ€μ²΄λœ λ¬Έμžμ—΄: Helli Wirld"

4.6. λŒ€λ¬Έμž λ³€ν™˜ν•˜κΈ°

String str = "Hello World";
String upperCaseStr = str.toUpperCase();
System.out.println("λŒ€λ¬Έμž λ³€ν™˜: " + upperCaseStr); // 좜λ ₯: "λŒ€λ¬Έμž λ³€ν™˜: HELLO WORLD"

4.7. μ†Œλ¬Έμž λ³€ν™˜ν•˜κΈ°

String str = "Hello World";
String lowerCaseStr = str.toLowerCase();
System.out.println("μ†Œλ¬Έμž λ³€ν™˜: " + lowerCaseStr); // 좜λ ₯: "μ†Œλ¬Έμž λ³€ν™˜: hello world"

μœ„μ˜ μ˜ˆμ œλŠ” String 클래슀의 λͺ‡ 가지 μ£Όμš” λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ λ¬Έμžμ—΄μ„ λ‹€λ£¨λŠ” λ‹€μ–‘ν•œ μž‘μ—…μ„ μˆ˜ν–‰ν•˜λŠ” 방법을 λ³΄μ—¬μ€λ‹ˆλ‹€. μ΄λŸ¬ν•œ λ©”μ„œλ“œλ₯Ό 적절히 μ‘°ν•©ν•˜μ—¬ λ¬Έμžμ—΄μ„ μ›ν•˜λŠ” λŒ€λ‘œ μ‘°μž‘ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

5. λ¬Έμžμ—΄ 닀루기에 λŒ€ν•œ μœ μš©ν•œ 팁 및 주의 사항 μ΄ν•΄ν•˜κΈ°

λ¬Έμžμ—΄μ€ μžλ°” ν”„λ‘œκ·Έλž˜λ°μ—μ„œ 맀우 μ€‘μš”ν•˜λ©° λΉˆλ²ˆν•˜κ²Œ μ‚¬μš©λ˜λŠ” 데이터 ν˜•μ‹μž…λ‹ˆλ‹€. λ¬Έμžμ—΄μ„ λ‹€λ£¨λŠ” λ°μ—λŠ” μœ μš©ν•œ 팁과 μ£Όμ˜ν•΄μ•Ό ν•  사항이 λͺ‡ 가지 μžˆμŠ΅λ‹ˆλ‹€.

5.1. String ν΄λž˜μŠ€μ™€ λ¬Έμžμ—΄ λΆˆλ³€μ„±

String ν΄λž˜μŠ€λŠ” λΆˆλ³€(immutable) ν΄λž˜μŠ€μž…λ‹ˆλ‹€. μ΄λŠ” ν•œλ²ˆ μƒμ„±λœ λ¬Έμžμ—΄μ€ λ³€κ²½ν•  수 μ—†λ‹€λŠ” 것을 μ˜λ―Έν•©λ‹ˆλ‹€. λ”°λΌμ„œ λ¬Έμžμ—΄μ„ μ‘°μž‘ν•˜λŠ” λŒ€λΆ€λΆ„μ˜ λ©”μ„œλ“œλŠ” μƒˆλ‘œμš΄ λ¬Έμžμ—΄μ„ λ°˜ν™˜ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, substring() λ©”μ„œλ“œλ‘œ λ¬Έμžμ—΄μ„ 자λ₯΄κ±°λ‚˜, replace() λ©”μ„œλ“œλ‘œ 문자λ₯Ό λŒ€μ²΄ν•˜λ©΄ 원본 λ¬Έμžμ—΄μ€ λ³€κ²½λ˜μ§€ μ•Šκ³  μƒˆλ‘œμš΄ λ¬Έμžμ—΄μ΄ μƒμ„±λ©λ‹ˆλ‹€.

String str = "Hello World";
String sub = str.substring(0, 5); // "Hello"
System.out.println(str); // 좜λ ₯: "Hello World"

5.2. λ¬Έμžμ—΄κ³Ό μ—°μ‚°μž '+'

λ¬Έμžμ—΄κ³Ό λ‹€λ₯Έ 데이터 ν˜•μ‹μ„ μ—°κ²°ν•  λ•ŒλŠ” '+' μ—°μ‚°μžλ₯Ό μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이λ₯Ό λ¬Έμžμ—΄ μ—°κ²°(concatenation)이라고 ν•©λ‹ˆλ‹€.

String str1 = "Hello";
String str2 = "World";
String message = str1 + " " + str2; // "Hello World"

5.3. λ¬Έμžμ—΄μ˜ 비ꡐ

λ¬Έμžμ—΄μ˜ λ‚΄μš©μ„ 비ꡐ할 λ•ŒλŠ” equals() λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•΄μ•Ό ν•©λ‹ˆλ‹€. '==' μ—°μ‚°μžλŠ” λ¬Έμžμ—΄μ˜ λ‚΄μš©μ΄ μ•„λ‹Œ μ°Έμ‘°λ₯Ό λΉ„κ΅ν•˜λ―€λ‘œ μ›ν•˜λŠ” κ²°κ³Όλ₯Ό 얻을 수 μ—†μŠ΅λ‹ˆλ‹€.

String str1 = "Hello";
String str2 = "Hello";
if (str1.equals(str2)) {
    System.out.println("두 λ¬Έμžμ—΄μ€ κ°™μŠ΅λ‹ˆλ‹€.");
}

5.4. λ¬Έμžμ—΄μ˜ 곡백 제거

λ¬Έμžμ—΄ μ•žλ’€μ— μžˆλŠ” 곡백을 μ œκ±°ν•˜κΈ° μœ„ν•΄ trim() λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

String str = "  Hello World  ";
String trimmedStr = str.trim(); // "Hello World"

5.5. λ¬Έμžμ—΄μ˜ 포맷 지정

λ¬Έμžμ—΄μ˜ 포맷을 μ§€μ •ν•˜κΈ° μœ„ν•΄ String.format() λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이λ₯Ό 톡해 숫자 ν˜•μ‹μ΄λ‚˜ λ‚ μ§œ ν˜•μ‹ 등을 μ›ν•˜λŠ” ν˜•νƒœλ‘œ λ³€ν™˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

int number = 12345;
String formattedNumber = String.format("%,d", number); // "12,345"

μœ„μ˜ 팁과 주의 사항을 μˆ™μ§€ν•˜λ©΄ λ¬Έμžμ—΄μ„ 효과적으둜 λ‹€λ£° 수 있으며, μžλ°” ν”„λ‘œκ·Έλž˜λ°μ—μ„œ λ¬Έμžμ—΄μ„ λ‹€λ£° λ•Œ μœ μš©ν•˜κ²Œ ν™œμš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

λŒ“κΈ€