IT/JAVA

Java String 클래스

iamhyeon 2025. 4. 15. 16:32

String 클래스의 메서드들을 계속 잊어버려 복습겸 다시 정리해보았다.

 

🔖String 클래스

- Java에서 문자열을 다룰 때 가장 기본이 되는 클래스
- String 클래스는 문자열 데이터를 다루기 위한 불변(Immutable) 객체이다 
- 한 번 생성된 문자열은 변경할 수 없으며, 문자열을 수정하는 것처럼 보이는 작업은 모두 새로운 문자열 객체를 생성하는 방식으로 처리된다 

 

👉🏼 실제로는 새로운 문자열 객체가 생성된다 

String str = "hello";
str = str + " world";

 

불변성 (Immutable) 문자열을 수정할 수 없으며, 수정 시 새로운 객체가 생성된다
객체 생성 방식 문자열 리터럴로 생성하거나, new String()으로 생성할 수 있다 
문자열 상수 풀 (String Pool) 동일한 리터럴 문자열은 메모리 재사용을 통해 효율성을 높인다 
+ 연산자 오버로딩 문자열 연결 시 + 연산자를 사용할 수 있다 
StringBuilder, StringBuffer와 비교 많은 문자열 수정이 필요할 경우, StringBuilder를 사용하는 것이 더 효율적이다 

 

📝 주요 메서드 정리 

메서드 설명 예시 
length() 문자열 길이 반환 "hello".length() → 5
charAt(int index) 특정 인덱스의 문자 반환 "hello".charAt(1) → 'e'
substring(int beginIndex) 특정 위치부터 끝까지 자름 "hello".substring(2) → "llo"
substring(int begin, int end) 범위 지정해서 자름 "hello".substring(1,4) → "ell"
indexOf(String str) 특정 문자열의 시작 위치 반환 "hello".indexOf("l") → 2
lastIndexOf(String str) 마지막으로 등장하는 위치 반환 "hello".lastIndexOf("l") → 3
equals(Object obj) 문자열 내용 비교 "hi".equals("hi") → true
equalsIgnoreCase(String another) 대소문자 무시 비교 "Hi".equalsIgnoreCase("hi") → true
startsWith(String prefix) 접두사 확인 "hello".startsWith("he") → true
endsWith(String suffix) 접미사 확인 "hello".endsWith("lo") → true
contains(CharSequence s) 포함 여부 확인 "hello".contains("ell") → true
replace(CharSequence old, CharSequence new) 문자열 치환 "hello".replace("l", "r") → "herro"
toLowerCase() 소문자로 변환 "Hello".toLowerCase() → "hello"
toUpperCase() 대문자로 변환 "hello".toUpperCase() → "HELLO"
trim() 앞뒤 공백 제거 " hi ".trim() → "hi"
split(String regex) 구분자로 나누기 "a,b,c".split(",") → ["a", "b", "c"]
isEmpty() 비어있는 문자열인지 확인 "".isEmpty() → true
compareTo(String another) 사전 순 비교 "abc".compareTo("bcd") → 음수
format(String format, Object...) 형식 문자열 생성 String.format("Hi %s", "Tom") → "Hi Tom"

 

불변성 객체의 특징 

- 스레드 안정성:  여러 스레드에서 안전하게 공유 가능하다 
- HashMap 키로 사용하기 적합:  값 변경 위험이 없다 
- 보안성 향상:  참조가 바뀌지 않기 때문에 안전하다
- 문열을 반복해서 수정해야 하는 경우, 매번 새로운 객체가 생성되어 성능 저하가 발생할 수 있다 
    - 이런 경우에는 StringBuilder 또는 StringBuffer를 사용하는 것이 좋다 

StringBuilder sb = new StringBuilder("hello");
sb.append(" world");
System.out.println(sb); // hello world

StringBuilder는 내부 버퍼를 활용해 문자열을 수정하므로, + 연산을 반복하는 것보다 효율적이다 

 

 

 

2025.01.19 - [IT/JAVA] - StringBuilder

 

StringBuilder

String 객체끼리 더하는 방법은 메모리 할당과 해제를 발생시키는데 덧셈 연산 많아진다면 성능적으로 좋지 않다많은 문자열을 연결하면 중간 문자열 객체가 생성되어 비효율적인 코드가 생성된

iamsh.tistory.com

 

반응형