💡 String 클래스 · Random · 제네릭 타입 · 팀프로젝트 2일차 정리
✨ [ String 클래스 ]
문자열을 표현하고 조작하기 위한 자바의 핵심 클래스
| 항목 | 설명 |
|---|
| 📘 정의 | 자바에서 문자열을 표현하는 방법 제공 |
| ⚙️ 특징 | 컴퓨터는 ‘문자(char)’는 알지만, ‘문자열(String)’은 알지 못함 → 문자열은 여러 문자의 조합 |
🧱 문자열 생성법
| 구분 | 방법 | 예시 |
|---|
| 1️⃣ 리터럴 방식 | 큰따옴표를 이용 | "Hello" |
| 2️⃣ 객체 생성 방식 | new String() 생성자 사용 | new String("Hello") |
🔍 문자열 비교법
| 비교 방식 | 설명 | 특징 |
|---|
== | 리터럴(상수) 문자열 비교 / 주소값 비교 | 주로 상수 비교에만 사용 |
.equals() | 문자열 값 자체 비교 | 실제 내용 비교용 |
⚙️ 주요 메소드
| 메소드 | 설명 |
|---|
.concat("문자열") | 문자열을 연결 |
String.format("형식문자", 값) | 지정한 형식으로 문자열 반환 |
StringBuilder sb = new StringBuilder(); | 문자열을 효율적으로 연결할 수 있는 클래스 (메모리 효율 ↑) |
.charAt(인덱스) | 지정한 인덱스의 문자 반환 |
.length() | 문자열의 길이 반환 |
.replace(기존문자열, 새로운문자열) | 기존 문자열 1개만 변경 후 반환 |
.replaceAll(기존문자열, 새로운문자열) | 모든 기존 문자열을 변경 후 반환 |
.substring(시작, 끝) | 지정 범위의 문자열 반환 (끝 인덱스 - 1까지) |
.split("구분자") | 구분자를 기준으로 문자열을 나눠 배열 반환 |
.indexOf("문자열") | 문자열 내 특정 문자열의 인덱스 반환 (없으면 -1) |
.contains("문자열") | 문자열 내 특정 문자열 존재 여부 반환 (boolean) |
.getBytes() | 문자열을 byte[] 배열로 변환 |
new String(byte[]) | byte[] 배열을 문자열로 변환 |
💡 Tip:
replace()는 첫 번째 항목만 교체
replaceAll()은 전체 교체 (HTML → Java 줄바꿈 변환 시 유용)
🎲 [ Random 클래스 ]
난수를 생성하는 클래스
| 항목 | 설명 |
|---|
| 📘 정의 | 난수(랜덤 값)를 생성하는 클래스 |
| ⚙️ 사용법 | Random 변수명 = new Random(); |
⚙️ 주요 메소드
| 메소드 | 설명 |
|---|
.nextInt() | int 타입 허용 범위 내 난수 생성 |
.nextInt(n) | 0 ~ (n-1) 범위의 난수 생성 |
.nextInt(n) + m | m부터 (m+n-1) 범위의 난수 생성 |
💡 예시
Random rand = new Random();
int num1 = rand.nextInt(10);
int num2 = rand.nextInt(5) + 1;
🔤 [ 제네릭 타입 (Generic Type) ]
다양한 데이터 타입을 처리할 수 있도록 만든 유연한 타입 시스템
| 항목 | 설명 |
|---|
| 📘 정의 | 여러 타입에서 동작하도록 만든 키워드 (<T>) |
| 🎯 목적 | 인스턴스 생성 시 타입을 지정해, 타입 안정성과 재사용성 향상 |
| ⚙️ 형식 | class 클래스명<T> { T 변수명; } |
🧱 클래스 및 인스턴스 생성
class Box<T> {
T value;
}
Box<String> box = new Box<>();
⚙️ 특징
| 항목 | 설명 |
|---|
| 🧩 유연성 | 다양한 타입에 대응 가능 |
| ♻️ 코드 중복 제거 | 동일한 로직을 여러 타입에서 재사용 가능 |
| 🚫 타입 안정성 확보 | 잘못된 타입 사용 방지 |
| ⚠️ 주의점 | 기본 타입 사용 불가 → 래퍼 클래스(Integer, Double 등) 사용 필요 |
🧩 활용처
| 분야 | 예시 |
|---|
| 💾 컬렉션 프레임워크 | ArrayList<String>, HashMap<Integer, String> 등 |
| 🧠 실무 중요성 | 제네릭을 활용한 자료형 유연성 확보 |
👥 [ 팀프로젝트 2일차 회고 ]
협업과 커뮤니케이션의 중요성을 깨달은 하루
| 항목 | 내용 |
|---|
| 💡 문제점 | 프로젝트 컨셉이 명확하지 않아, 프로토타입 작성 시 팀원 간 인식 차이 발생 |
| 🧠 개선 방향 | 개념적 대화 대신 구체적인 예시를 제시하여 의사소통 강화 |
| 🤝 팀워크 | 서로의 생각을 맞추기 위해 천천히 의견 조율 필요 |
| ❤️ 태도 | 감정에 휘둘리지 않고, 상대의 의견을 경청하고 수용하는 자세 유지 |
| ⚙️ 교훈 | “정확한 방향성 + 열린 태도”가 팀 프로젝트의 핵심 |