본문 바로가기

Java

[Java] String 클래스 주요 메서드를 살펴보자!

문자열에 'Java'가 포함되어 있는지: true
'Java'의 첫번째 인덱스: 7
인덱스 10부터 'Java'의 인덱스: 24
'Java'의 마지막 인덱스: 24

주요 메서드 목록

  • String 클래스는 문자열을 편리하게 다루기 위한 다양한 메서드를 제공한다.
  • 메서드를 외우기 보다는 필요할 때 검색하거나 API 문서를 통해서 원하는 기능을 찾는 것이 좋다.

(밑에서 자주 사용하는 기능 위주로 나열했습니다)

 

문자열 정보 조회

public class StringInfoMain {

    public static void main(String[] args) {
        String str = "Hello, Java!";
        System.out.println("문자열의 길이: " + str.length());
        System.out.println("문자열이 비어 있는지: " + str.isEmpty()); // ""
        System.out.println("문자열이 비어 있거나 공백인지: " + str.isBlank()); // "" or "     "
        System.out.println("문자열이 비어 있거나 공백인지: " + "      ".isBlank());

        char c = str.charAt(7);
        System.out.println("7번 인덱스 문자: " + c);
    }
}
문자열의 길이: 12
문자열이 비어 있는지: false
문자열이 비어 있거나 공백인지: false
문자열이 비어 있거나 공백인지: true
7번 인덱스 문자: J

 

 

문자열 비교

public class StringComparisonMain {

    public static void main(String[] args) {
        String str1 = "Hello, Java!";  // 대문자 일부 있음
        String str2 = "hello, java!"; // 대문자 없음
        String str3 = "Hello, World!";

        System.out.println("str1 equals str2: " + str1.equals(str2));
        System.out.println("str1 equals str2: " + str1.equalsIgnoreCase(str2));

        System.out.println("'b' compareTo 'a': " + "b".compareTo("a"));
        System.out.println("'a' compareTo 'b': " + "a".compareTo("b"));
        System.out.println("'c' compareTo 'a': " + "c".compareTo("a"));
        System.out.println("str1 compareTo str3: " + str1.compareTo(str3));
        System.out.println("str1 compareToIgnoreCase str2: " + str1.compareToIgnoreCase(str2));

        System.out.println("str1 start with 'Hello': " + str1.startsWith("Hello"));
        System.out.println("str1 end with 'Java!': " + str1.endsWith("Java!"));
    }
}
str1 equals str2: false
str1 equals str2: true
'b' compareTo 'a': 1
'a' compareTo 'b': -1
'c' compareTo 'a': 2
str1 compareTo str3: -13
str1 compareToIgnoreCase str2: 0
str1 start with 'Hello': true
str1 end with 'Java!': true

 

 

문자열 검색

public class StringSearchMain {

    public static void main(String[] args) {
        String str = "Hello, Java! Welcome to Java world.";

        System.out.println("문자열에 'Java'가 포함되어 있는지: " + str.contains("Java"));
        System.out.println("'Java'의 첫번째 인덱스: " + str.indexOf("Java"));
        System.out.println("인덱스 10부터 'Java'의 인덱스: " + str.indexOf("Java", 10));
        System.out.println("'Java'의 마지막 인덱스: " + str.lastIndexOf("Java"));
    }
}
문자열에 'Java'가 포함되어 있는지: true
'Java'의 첫번째 인덱스: 7
인덱스 10부터 'Java'의 인덱스: 24
'Java'의 마지막 인덱스: 24

 

 

문자열 조작 및 변환

public class StringChangeMain1 {

    public static void main(String[] args) {
        String str = "Hello, Java! Welcome to Java";

        System.out.println("인덱스 7부터의 부분 문자열: " + str.substring(7));
        System.out.println("인덱스 7부터의 부분 문자열: " + str.substring(7, 12));

        System.out.println("문자열 결합: " + str.concat("!!!"));

        System.out.println("'Java'를 'World'로 대체: " + str.replace("Java", "World"));
        System.out.println("첫 번째 'Java'를 'World'로 대체: " + str.replaceFirst("Java", "World"));
    }
}
인덱스 7부터의 부분 문자열: Java! Welcome to Java
인덱스 7부터의 부분 문자열: Java!
문자열 결합: Hello, Java! Welcome to Java!!!
'Java'를 'World'로 대체: Hello, World! Welcome to World
첫 번째 'Java'를 'World'로 대체: Hello, World! Welcome to Java

 

 

public class StringChangeMain2 {

    public static void main(String[] args) {
        String strWithSpaces = "    Java Programing  ";

        System.out.println("소문자로 변환: " + strWithSpaces.toLowerCase());
        System.out.println("소문자로 변환: " + strWithSpaces.toUpperCase());

        System.out.println("공백 제거(trim): " + strWithSpaces.trim());
        System.out.println("공백 제거(strip): " + strWithSpaces.strip()); // Java11
        System.out.println("공백 제거(strip): " + strWithSpaces.stripLeading()); // 앞 부분 제거
        System.out.println("공백 제거(strip): " + strWithSpaces.stripTrailing()); // 뒷 부분 제거
    }
}
public class StringChangeMain2 {

    public static void main(String[] args) {
        String strWithSpaces = "    Java Programing  ";

        System.out.println("소문자로 변환: " + strWithSpaces.toLowerCase());
        System.out.println("소문자로 변환: " + strWithSpaces.toUpperCase());

        System.out.println("공백 제거(trim): " + strWithSpaces.trim());
        System.out.println("공백 제거(strip): " + strWithSpaces.strip()); // Java11
        System.out.println("앞 부분 공백 제거(strip): " + strWithSpaces.stripLeading());
        System.out.println("뒷 부분 공백 제거(strip): " + strWithSpaces.stripTrailing()); 
    }
}
소문자로 변환:     java programing  
소문자로 변환:     JAVA PROGRAMING  
공백 제거(trim): Java Programing
공백 제거(strip): Java Programing
앞 부분 공백 제거(strip): Java Programing  
뒷 부분 공백 제거(strip):     Java Programing

 

 

 

public class StringSplitJoinMain {

    public static void main(String[] args) {
        String str = "Apple,Banana,Orange";

        // split()
        String[] splitStr = str.split(",");
        for (String s : splitStr) {
            System.out.println(s);
        }

        // join()
        String joinedStr = String.join("-", "A", "B", "C");
        System.out.println("연결된 문자열: " + joinedStr);

        // 문자열 배열 연결
        String result = String.join("-", splitStr);
        System.out.println("result = " + result);
    }
}
Apple
Banana
Orange
연결된 문자열: A-B-C
result = Apple-Banana-Orange

 

 

기타 유틸리티

public class StringUtilsMain1 {

    public static void main(String[] args) {
        int num = 100;
        boolean bool = true;
        Object obj = new Object();
        String str = "Hello Java!";

        // valueOf 메서드
        String numString = String.valueOf(num);
        System.out.println("숫자의 문자열 값: " + numString);
        String boolString = String.valueOf(bool); // "true"
        System.out.println("boolean의 문자열 값: " + boolString);
        String objString = String.valueOf(obj);
        System.out.println("객체의 문자열 값: " + objString);
        
        // 문자 + x => 문자
        String numString2 = "" + num;
        System.out.println("빈 문자열 + num: " + numString2);

        // toCharArray 메서드
        char[] strCharArray = str.toCharArray();
        System.out.println("문자열을 문자 배열로 변환: " + strCharArray); // 객체값 반환 
        System.out.println(strCharArray);
        for (char c : strCharArray) {
            System.out.print(c);
        }
    }
}
숫자의 문자열 값: 100
boolean의 문자열 값: true
객체의 문자열 값: java.lang.Object@4e50df2e
빈 문자열 + num: 100
문자열을 문자 배열로 변환: [C@1d81eb93
H
e
l
l
o
 
J
a
v
a
!

 

 

public class StringUtilsMain2 {

    public static void main(String[] args) {
        int num = 100;
        boolean bool = true;
        String str = "Hello Java!";

        // format 메서드
        String format1 = String.format("num: %d, bool: %b, str: %s", num, bool, str);
        System.out.println(format1);

        String format2 = String.format("숫자: %.2f", 10.1234);
        System.out.println(format2);

        // printf
        System.out.printf("숫자: %.3f\n", 10.1234);

        // matches 메서드
        // "Hello, Java!" Java OR World
        String regex = "Hello, (Java!|World)";
        System.out.println("'str'가 패턴과 일치하는가? " + str.matches(regex));
    }
}
num: 100, bool: true, str: Hello Java!
숫자: 10.12
숫자: 10.123
'str'가 패턴과 일치하는가? false

 

 


 

문자열 정보 조회

  • length( ) : 문자열의 길이를 반환한다.
  • isEmpty( ) : 문자열이 비어 있는지 확인한다. (길이가 0)
  • isBlank( ) :  문자열이 비어 있는지 확인한다. (길이가 0 이거나 공백만 있는 경우), 자바 11
  • charAt (int index) : 저장된 인덱스에 있는 문자를 반환한다.

문자열 비교

  • equals (Object anObject ) : 두 문자열이 동일한지 비교한다.
  • equalsIgnoreCase (String anotherString) : 두 문자열을 대소문자 구분 없이 비교한다.
  • compareTo (String anotheString) : 두 문자열을 사전 순으로 비교한다.
  • compareToIgnoreCase (String str) : 두 문자열을 대소문자 구분 없이 사전적으로 비교한다.
  • startsWith (String prefix) : 문자열이 특정 접두사로 시작하는지 확인한다.
  • endWith (String suffix) : 문자열이 특정 접미사로 끝나는지 확인한다.

문자열 검색

  • contains (CharSequence s) : 문자열이 특정 문자열을 포함하고 있는지 확인한다.
  • indexOf (String ch) / indexOf (String ch, int fromIndex) : 문자열이 처음 등장하는 위치를 반환한다.
  • lastIndexOf (String ch) : 문자열이 마지막으로 등장하는 위치를 반환한다.

문자열 조작 및 변환(반환값 받아야함)

  • substring (int beginIndex) / substring(int beginIndex, int endIndex) : 문자열의 부분
    문자열을 반환한다.
  • concat (String str) : 문자열의 끝에 다른 문자열을 붙인다.
  • replace (CharSequence target, CharSequence replacement) : 특정 문자열을 새 문자열로 대체
    한다.
  • replaceAll (String regex, String replacement) : 문자열에서 정규 표현식과 일치하는 부분을 새
    문자열로 대체한다.
  • replaceFirst (String regex, String replacement) : 문자열에서 정규 표현식과 일치하는 첫 번째
    부분을 새 문자열로 대체한다.
  • toLowerCase() / toUpperCase() : 문자열을 소문자나 대문자로 변환한다.
  • trim() : 문자열 양쪽 끝의 공백을 제거한다. 단순 Whitespace 만 제거할 수 있다.
  • strip() : Whitespace 와 유니코드 공백을 포함해서 제거한다. 자바 11

기타 유틸리티

  • valueOf (Object obj) : 다양한 타입을 문자열로 변환한다.
  • toCharArray(): 문자열을 문자 배열로 변환한다.
  • format (String format, Object... args) : 형식 문자열과 인자를 사용하여 새로운 문자열을 생성한
    다.
  • matches (String regex) : 문자열이 주어진 정규 표현식과 일치하는지 확인한다.

 

'Java' 카테고리의 다른 글

[Java] Wrapper class  (0) 2024.04.05
[Java] 가변 String  (1) 2024.04.04
[Java] String 클래스가 불변 객체 라고?  (0) 2024.04.02
[Java] 불변 객체, 불변 클래스  (1) 2024.04.01
[Java] Object 클래스  (2) 2024.03.29