본문 바로가기
개발/Java

자바 String 클래스

by BellOne4222 2024. 1. 29.

자바 String 클래스


문자열 생성 방법

  • 문자열은 객체로 취급한다.
String str1 = new String("Hello World")
String str2 = new String("Hello World")
  • stack메모리에 저장된 str1객체를 Heap 메모리에 새로운 Stirng객체를 생성(str1에서 HelloWorld를 가리킨다)
  • new를 사용하면 Heap Memory에 저장
String str1 = "HelloWorld" // 리터럴 상수
String str2 = "HelloWorld" // 리터럴 상수
  • stack메모리에 저장된 str1객체를 Literal Pool 메모리에 새로운 문자열 객체를 생성 (str1에서 HelloWorld를 가리킨다)
  • Literal Pool
    • 재활용 메모리 공간
    • 한 번 만들어진 객체를 다시 생성하지 않고 str2도 같은 주소를 가리키게 재활용
    • 이미 생성된 문자열을 가리킨다

String 클래스에서 제공하는 메서드 활용

public class StringManipulation {
    public static void main(String[] args) {
        // HelloWorld 라는 문자열을 생성하세요.
        int a = 10;
        String str = "HelloWorld";

        System.out.println(str.charAt(1)); // 'e'

        System.out.println(str.replaceAll("o", "X")); // HellXWXrld //

        System.out.println(str.length()); // 10

        System.out.println(str.toUpperCase()); // HELLOWORLD

        System.out.println(str.toLowerCase()); // helloworld

        System.out.println(str.substring(5)); // World

        System.out.println(str.substring(5, 8)); // Wor

        System.out.println(str.indexOf("Wr")); // 5, -1

        for (int i = 0; i < str.length(); i++) {
            System.out.println(str.charAt(i));
        }
    }
}

문자열을 비교하는 방법

  • 문자열은 == 으로 같은지 판별 할 수 없다.
  • equals() 메서드를 사용해서 문자열의 동등 판단
    • String1.equals(String2)
  • compareTo() 메서드
    • 문자열을 사전순으로 비교하며 두 문자열이 같으면 0을 반환하고, 비교 대상 문자열이 기준 문자열보다 작으면 음수를, 크면 양수를 반환
    • str1.compareTo(str2)
    • 각 문자열의 아스키코드값으로 비교하는 방식
public class StringCompare {
    public static void main(String[] args) {
        String str1="Hello";
        String str2="World";
        if(str1.equals(str2)){
            System.out.println("str1==str2");
        }else{
            System.out.println("str1!=str2"); // O
        }

        String str3="apple";
        String str4="banana";

        int result=str3.compareTo(str4); // 0, 음수, 양수
        if(result==0){
            System.out.println("str3==str4");
        }else if(result<0){
            System.out.println("str3<str4");
        }else{
            System.out.println("str3>str4");
        }
    }
}

문자열 분리(delimiter)

  • String.split(기준)
    • 기준 문자를 기준으로 문자열을 분리
  • 정규표현식
    • \s+
      • 하나 이상의 공백 문자를 나타내는 표현식
public class StringSplit {
    public static void main(String[] args) {
        String str = "Hello,World,Java";
        String[] strArray = str.split(","); // ,을 기준으로 분리

        for ( String s: strArray){
            System.out.println(s);
        }

        String str1 = "Hello World Java";
        String[] str1Array = str1.split("\\s+"); // 공백을 기준으로 분리

        for(String s : str1Array){
            System.out.println(s);
        }

        Scanner scanner = new Scanner(System.in);
        System.out.println("문자열을 입력하세요");
        String str2 = scanner.nextLine();
        String[] str2Array = str2.split("\\s+"); // 입력받은 문자열을 공백을 기준으로 분
        for(String s : str2Array){
            System.out.println(s);
        }
    }
}

'개발 > Java' 카테고리의 다른 글

Collection API  (0) 2024.01.29
인터페이스 기반의 프로그래밍  (0) 2024.01.29
자바 API  (0) 2024.01.29
자바 최상위 클래스 Object  (0) 2024.01.29
추상클래스와 인터페이스  (0) 2024.01.29