Java Mid 04 - String 클래스

String 클래스

String은 자바에서 객체로 다뤄지며, 클래스이다. int, boolean 같은 기본형이 아닌 참조형으로, String 변수가 실제 문자열 값을 직접 저장하는 것이 아니라, 문자열 객체에 대한 참조를 저장된다.


String str1 = "Hello";   // 기존 방식
String str2 = new String("hello");   // 객체를 명시적으로 생성하는 방식

String str1 = "hello";와 같은 코드는 자바 언어에서 new String("hello")로 변환되어 처리한다.

이는 자바가 문자열을 쉽게 다룰 수 있도록 제공하는 편의 기능이며 문자열을 생성할 때, 객체를 직접 생성하지 않더라도 편리하게 사용할 수 있다.

String 의 내부 구조

문자열 데이터는 내부적으로 char[] 배열에 저장되었으나, 자바 9부터는 메모리 효율성을 높이기 위해 char[] 대신 byte[]를 사용하게 된다. 자바에서 char 타입은 2바이트를 지원하지만, 영어와 숫자 같은 단순한 문자는 1바이트로 표현이 가능하다. 자바 9 이후, 문자열은 Latin-1 인코딩의 경우 1바이트를 사용하고, 그 외의 문자들은 UTF-16 인코딩으로 2바이트를 사용하여 메모리를 절약할 수 있게 변경된다.

String 의 주요 메서드

  • length(): 문자열의 길이를 반환한다
  • charAt(int index): 특정 인덱스에 위치한 문자를 반환한다.
  • substring(int beginIndex, int endIndex): 부분 문자열을 반환한다.
  • indexOf(String str): 특정 문자열이 처음 나타나는 인덱스를 반환한다.
  • toLowerCase(), toUpperCase(): 문자열을 각각 소문자 또는 대문자로 변환한다.
  • trim(): 문자열의 양쪽 끝에 있는 공백을 제거한다.
  • concat(String str): 문자열을 이어 붙인다.

문자열 더하기

문자열을 더할 때 Stringconcat() 메서드를 사용할 수 있다. 그러나 자바는 편의상 + 연산자를 통해 문자열을 이어 붙이는 기능도 제공한다. 이는 문자열이 자주 사용되기 때문에 자바에서 특별히 지원하는 문법이다.

public class StringConcatMain {
    public static void main(String[] args) {
        String a = "hello";
        String b = " java";

        // concat() 메서드를 사용하여 문자열을 결합
        String result1 = a.concat(b);
        // + 연산자를 사용하여 문자열을 결합
        String result2 = a + b;

        System.out.println(result1);  // 출력: hello java
        System.out.println(result2);  // 출력: hello java
    }
}

이처럼 concat() 메서드와 + 연산자는 모두 문자열을 이어 붙이지만, +는 자바에서 특별하게 제공하는 기능이다.

String또한 불변객체이다.

String은 불변 객체(immutable object)이다. 한 번 생성된 String 객체의 값은 변경할 수 없다. 예를 들어, 문자열에 대해 어떤 연산을 수행할 때, 기존 문자열이 수정되는 것이 아니라 새로운 String 객체가 생성된다.

public class StringImmutableExample {
    public static void main(String[] args) {
        String str = "hello";
        str = str.concat(" world");
        System.out.println(str);  // 출력: hello world
    }
}

Reference

인프런 김영한님의 실전 자바 강좌



© 2022. by taewoo

Powered by taewoo