✅ 6. 문자열 다루기 (String, StringBuilder)
자바에서 문자열을 다루는 방법은 크게 String(불변 객체)과 StringBuilder(가변 객체) 두 가지.
📍 1) String 클래스 (불변, Immutable)
- String 객체는 한 번 생성되면 변경 불가능(Immutable)
- 문자열을 다룰 때 새로운 객체를 계속 생성하므로 성능이 중요할 때는 StringBuilder 사용 추천
- 문자열 비교 시 == 대신 equals() 메서드 사용!
1. 문자열 선언과 초기화
String str1 = "Hello"; // 리터럴 방식
String str2 = new String("Hello"); // 객체 생성 방식
📌 리터럴 방식은 메모리 효율적 (같은 문자열은 재사용)
2. 문자열 연결 (+, concat())
String s1 = "Hello";
String s2 = "World";
String result = s1 + " " + s2; // "Hello World"
String result2 = s1.concat(" ").concat(s2); // "Hello World"
3. 문자열 길이 (length())
String text = "Java Programming";
System.out.println(text.length()); // 16
4. 문자 추출 (charAt(index))
String word = "Java";
System.out.println(word.charAt(0)); // 'J'
5. 부분 문자열 추출 (substring(start, end))
String sentence = "Hello, World!";
System.out.println(sentence.substring(7, 12)); // "World"
6. 특정 문자/문자열 포함 여부 (contains())
String message = "Welcome to Java";
System.out.println(message.contains("Java")); // true
7. 특정 문자/문자열 위치 찾기 (indexOf(), lastIndexOf())
String sentence = "Programming in Java";
System.out.println(sentence.indexOf("Java")); // 16
System.out.println(sentence.lastIndexOf("a")); // 19
8. 문자열 대소문자 변환 (toUpperCase(), toLowerCase())
String text = "Hello";
System.out.println(text.toUpperCase()); // "HELLO"
System.out.println(text.toLowerCase()); // "hello"
9. 문자열 치환 (replace(), replaceAll())
String text = "Java is fun";
System.out.println(text.replace("Java", "Python")); // "Python is fun"
10. 문자열 공백 제거 (trim())
String text = " Hello World ";
System.out.println(text.trim()); // "Hello World"
11. 문자열 분할 (split())
String data = "apple,banana,grape";
String[] fruits = data.split(",");
for (String fruit : fruits) {
System.out.println(fruit);
}
📌 실행 결과:
apple
banana
grape
📍 2) StringBuilder 클래스 (가변, Mutable)
- StringBuilder는 문자열을 변경할 수 있는 객체 (성능이 더 좋음)
- + 연산보다 StringBuilder를 쓰면 문자열 연산 속도가 훨씬 빠름
- 멀티스레드 환경에서는 StringBuffer 사용
1. StringBuilder 선언과 초기화
StringBuilder sb = new StringBuilder("Hello");
2. 문자열 추가 (append())
sb.append(" World");
System.out.println(sb); // "Hello World"
3. 문자열 삽입 (insert(index, text))
sb.insert(5, ",");
System.out.println(sb); // "Hello, World"
4. 문자열 삭제 (delete(start, end))
sb.delete(5, 6);
System.out.println(sb); // "Hello World"
5. 문자열 변경 (replace(start, end, text))
sb.replace(6, 11, "Java");
System.out.println(sb); // "Hello Java"
6. 문자열 뒤집기 (reverse())
sb.reverse();
System.out.println(sb); // "avaJ olleH"
✅ String vs StringBuilder 비교
기능 | String | StringBuilder |
변경 가능 여부 | ❌ 불가능 (Immutable) | ✅ 가능 (Mutable) |
속도 | 느림 (새 객체 생성) | 빠름 (원본 수정) |
사용 예 | 문자열 조작이 적을 때 | 문자열을 자주 변경할 때 |
✅ 7. 컬렉션 프레임워크 (List, Set, Map)
자바의 컬렉션(Collection) 프레임워크는 여러 데이터를 효율적으로 다루기 위한 자료구조.
📍 1) List (순서 O, 중복 O)
- 대표적으로 ArrayList, LinkedList가 있음
- ArrayList는 배열 기반 (탐색이 빠름)
- LinkedList는 연결 리스트 기반 (삽입/삭제가 빠름)
ArrayList 사용 예
import java.util.ArrayList;
public class ListExample {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>();
list.add(10); // 추가
list.add(20);
list.add(30);
list.remove(1); // 인덱스 1 삭제 (20 제거)
System.out.println("리스트 크기: " + list.size()); // 2
for (int num : list) {
System.out.println(num);
}
}
}
📍 2) Set (순서 X, 중복 X)
- 중복 데이터를 허용하지 않는 자료구조
- 대표적으로 HashSet과 TreeSet이 있음
HashSet 사용 예
import java.util.HashSet;
public class SetExample {
public static void main(String[] args) {
HashSet<Integer> set = new HashSet<>();
set.add(10);
set.add(20);
set.add(10); // 중복 값은 추가되지 않음
System.out.println(set); // [10, 20]
}
}
📍 3) Map (키-값 저장, 순서 X, 중복 키 X)
- 대표적으로 HashMap, TreeMap이 있음
- HashMap은 키 순서가 없음, TreeMap은 키 기준 정렬됨
HashMap 사용 예
import java.util.HashMap;
public class MapExample {
public static void main(String[] args) {
HashMap<String, Integer> map = new HashMap<>();
map.put("apple", 3);
map.put("banana", 2);
map.put("cherry", 5);
System.out.println(map.get("banana")); // 2
map.remove("apple"); // "apple" 키 삭제
System.out.println(map);
}
}
'Java' 카테고리의 다른 글
[Java] 기본 문법 정리 - 이진 탐색, DFS & BFS, 동적 프로그래밍(DP) (0) | 2025.03.19 |
---|---|
[Java] 기본 문법 정리 - 정렬, 스택 & 큐, 우선순위 큐, 해시맵, 해시셋 (0) | 2025.03.19 |
[Java] 기본 문법 정리 - 반복문, 배열과 리스트 (0) | 2025.03.19 |
[Java] 기본 문법 정리 - 자료형과 변수, 연산자, 조건문 (0) | 2025.03.19 |
[Java] 변수 Variable (0) | 2025.03.18 |
댓글