본문 바로가기

프로그래밍언어/Java

[Java 중급] String 클래스

String 클래스


자바에서 문자를 다루는 대표적인 타입은 char, String 이 있다. 

 

public class CharArrayMain {

    public static void main(String[] args) {
        char a = 'a';
        System.out.println("a = " + a);

        char[] charArr = new char[] { 'h', 'e', 'l', 'l', 'o' };
        System.out.println(charArr);

        String str = "hello";
        System.out.println("str = " + str);
    }
}

 

=> char는 문자 하나를 다룰 때 사용한다. 따라서 여러 문자를 나열하려면 배열로 선언해야 한다. 이렇게 배열로 선언하는 것은 불편하기 때문에 자바는 문자열을 편하게 다룰 수 있도록 String 클래스를 제공한다. 

 

public class StringBasicMain {

    public static void main(String[] args) {
        String str1 = "hello";
        String str2 = new String("hello");

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

=> String은 클래스다. 따라서 str1 변수에는 String 인스터스의 참조값만 들어갈 수 있다. 따라서 str1 변수에 값을 할당하는 과정이 뭔가 어색해보인다. 

문자열은 매우 자주 사용된다. 그래서 편의상 쌍따옴표로 문자열을 감싸면 자바에서 new String("hello") 와 같이 변경해준다. 

 

 

String 클래스 구조


 

String 클래스는 다음과 같다. 

 

public final class String {
	//문자열 보관
    private final char[] value;
    private final byte[] value;
    
    //메서드
    public String concat(String str){...}
    public int length() {...}

}

=> String 클래스는 실제 문자열을 char 배열로 보관한다.(자바 9 이후부터는 byte[])

 

String 클래스는 개발자가 직접 다루기 불편한 char[] 을 내부에 감추고 String 클래스를 사용하는 개발자가 편리하게 문자를 다룰 수 있도록 다양한 기능을 제공한다. 

 

 

String 클래스와 참조형


String은 클래스이다. 따라서 기본형이 아니라 참조형이다. 참조형은 변수에 계산할 수 있는 값이 들어가는 것이 아니라 참조값이 들어간다. 따라서 원칙적으로 + 같은 연산을 사용할 수 없다. 원칙으로는 String이 제공하는 concat()과 같은 메서드를 사용해야 한다. 하지만 문자열은 너무 자주 다루어지기 때문에 자바에서 편의상 + 연산을 제공한다. 

 

 

 

* 인프런 '김영한의 실전 자바 - 중급 1편'을 참고하여 작성하였습니다.