본문 바로가기

TIPS

문자열(String) 기본 개념

728x90
반응형
SMALL

 

 

 

 

 

1.문자열(String)이란?

Java에서 String은 문자들의 연속된 집합으로, 불변(immutable) 속성을 가진다.

즉, String 객체가 한 번 생성되면 내부 값이 변경되지 않는다!

따라서 문자열을 수정하는 함수(replace(), substring() 등)를 사용하면 새로운 문자열이 생성된다.

자주 사용하는 문자열 함수

 
메서드
설명
substring(start, end)
특정 위치(start)부터 end 이전까지 문자열을 추출
contains(str)
특정 문자열을 포함하는지 검사 (true / false 반환)
startsWith(str, index)
특정 위치에서 지정된 문자열로 시작하는지 확인
endsWith(str)
특정 문자열로 끝나는지 확인
replace(old, new)
특정 문자열을 다른 문자열로 치환
toUpperCase()
문자열을 대문자로 변환
toLowerCase()
문자열을 소문자로 변환
trim()
문자열 양쪽의 공백 제거
split(regex)
특정 구분자로 문자열을 나누어 배열로 반환
Integer.parseInt(str, radix)
문자열을 지정된 진법(radix)에서 정수로 변환

 

 


2. 예제 코드 분석

 

public class StringExample {
    public static void main(String[] args) {
        /***********************************************************************/
        /*************************** 데이터 수정 연습 ******************************/
        /***********************************************************************/
        
        // 1. 문자열 자르기 (substring)
        String str = "가123 나다라45.";
        System.out.println("substring(0, 6): " + str.substring(0, 6));  // "가123 나"

        // 2. 특정 문자열 포함 여부 검사
        boolean result1 = str.contains("나");  // "나"를 포함하는지 확인
        boolean result2 = str.startsWith("가1", 0); // "가1"이 0번째 위치에서 시작하는지 확인
        boolean result3 = str.endsWith("5."); // "5."로 끝나는지 확인
        
        System.out.println("contains(\"나\"): " + result1);
        System.out.println("startsWith(\"가1\", 0): " + result2);
        System.out.println("endsWith(\"5.\"): " + result3);

        // 3. 문자열 변경 (replace)
        System.out.println("replace(\"45\", \"123\"): " + str.replace("45", "123"));

        // 4. 문자열 → 숫자 변환 (2진수 → 10진수)
        int binaryToDecimal = Integer.parseInt("1011101011", 2);  
        System.out.println("Binary '1011101011' to Decimal: " + binaryToDecimal);

        // 5. 문자열 변환 예제 추가
        System.out.println("toUpperCase(): " + str.toUpperCase()); // 대문자로 변환
        System.out.println("toLowerCase(): " + str.toLowerCase()); // 소문자로 변환
        System.out.println("trim(): '" + "   Hello World   ".trim() + "'"); // 공백 제거
        
        // 6. 문자열 나누기 (split)
        String sample = "사과,바나나,포도,수박";
        String[] fruits = sample.split(",");
        System.out.println("split 결과:");
        for (String fruit : fruits) {
            System.out.println("- " + fruit);
        }

        // 7. 숫자를 문자열로 변환
        int number = 1234;
        String numberStr = String.valueOf(number);
        System.out.println("숫자 -> 문자열 변환: " + numberStr);
    }
}
 

 


3. 실행 결과 예상

 

substring(0, 6): 가123 나
contains("나"): true
startsWith("가1", 0): true
endsWith("5."): true
replace("45", "123"): 가123 나다라123.
Binary '1011101011' to Decimal: 747
toUpperCase(): 가123 나다라45.
toLowerCase(): 가123 나다라45.
trim(): 'Hello World'
split 결과:
- 사과
- 바나나
- 포도
- 수박
숫자 -> 문자열 변환: 1234
 

4. 문자열 관련 꿀팁

1) String은 불변(Immutable) 객체!

String str = "Hello";
str = str.replace("H", "J"); // 새로운 문자열을 생성하여 str에 할당
 

💡 replace()를 사용해도 원본 문자열이 바뀌지 않음 → 새로운 문자열을 반환하는 구조.

 


 

✔ 2) 성능이 중요한 경우 StringBuilder 사용 +tip : 코딩테스트 할때 매우 유용(시간 줄여준다)

 

StringBuilder sb = new StringBuilder("Hello");
sb.append(" World");
System.out.println(sb.toString()); // "Hello World"
 

💡 String보다 문자열 추가/수정 속도가 빠름 (StringBuffer도 가능하지만, StringBuilder가 더 빠름).


3) split()을 사용한 문자열 분할

 

String data = "홍길동|이순신|강감찬";
String[] names = data.split("\\|"); // |는 정규식에서 특수문자이므로 \\로 이스케이프 필요
 

💡 특정 구분자로 문자열을 나눌 때 유용.

 


4) format()을 활용한 문자열 포맷팅

 

String name = "홍길동";
int age = 30;
System.out.println(String.format("이름: %s, 나이: %d", name, age));
 

5) join()을 활용한 문자열 결합

 

String[] words = {"Hello", "World", "Java"};
String result = String.join(" ", words);
System.out.println(result); // "Hello World Java"
 

💡 배열을 하나의 문자열로 변환할 때 편리.

 


 

 

5. 마무리

📌 정리

✅ substring(), replace(), contains() 등 다양한 문자열 처리 함수 존재

✅ 문자열 변환 시 Integer.parseInt(), String.valueOf() 등을 활용

✅ 성능이 중요한 경우 StringBuilder 사용 추천(ex 코딩테스트)

✅ split()과 join()을 활용하여 문자열을 다루기 쉽게 변환

 

 

 

학스의 개발일지

일상과 코딩 그 사이 어딘가에있는 블로그.. 블로거이자 빅데이터개발자 학스 입니다 JAVA, jQuery, PostgreSQL, MySQL, HIVE, Hadoop 더 많은 정보는 깃허브 주소 https://github.com/hacs2772 를 방문해주세요

hacs2772.tistory.com

 

 


오류나 궁금하신점은
아래 댓글로 알려주시면 감사하겠습니다.

 

 

 

728x90
반응형
LIST