Java String 클래스(자바 9~)

자바 9 버전부터 String 클래스 내부에서 char[] 타입을 사용하였으나 업데이트 이후 byte[] 타입을 사용한다.

String

private final byte[] value;
byte[] 이전에는 문자 char 타입 표현에는 2byte를 강제하였다. byte 타입으로 변경하게되면서, 영어 숫자 또한 1byte 표현(Laten-1 인코딩 1byte 이용)이 가능하고, UTF-16 인코딩은 2byte 문자 표현으로 필요한 바이트만 적재하여 메모리 효율적으로 사용한다.

String 메소드 종류

String 메소드는 다양하게 지원한다. 기능 활용에는 API 문서를 참고하여 사용한다.

  • length(): 문자열 길이 반환
  • charAt(int index): 특정 인덱스에 속한 문자 반환
  • substring(int beginIndex, int endIndex): 문자열 일부 문자 반환
  • indexOf(String str): 특정 문자열의 인덱스 값 반환
  • toLowerCase(): 문자열 소문자 변환
  • toUpperCase(): 문자열 대문자 반환
  • trim(): 문자열 양 끝 공백 제거
  • concat(String str): 문자열 이어붙이기

참조형 그리고 String 클래스

String 클래스는 기본형 타입이 아닌 참조형 타입이다.
String 변수에는 계산 가능한 값이 아닌 참조 주소를 갖고 있고, 원래대로라면 더하기(+) 연산을 사용할 수 없다.

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

        String result = h.concat(j)
        System.out.println("result = " + result); // hello java
        
        result = a + b;
        System.out.println("result = " + result); // hello java
    }
}
  • 자바의 문자열을 이어 붙이려면 concat() 메소드로 사용해야한다.
  • 문자열은 자주 사용되어 언어에서 더하기(+) 연산을 제공하게 되었다.