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편'을 참고하여 작성하였습니다.
'프로그래밍언어 > Java' 카테고리의 다른 글
[Java 중급] String 클래스 - 불변 객체 (0) | 2024.08.13 |
---|---|
[Java 중급] String 클래스 - 비교 (0) | 2024.08.13 |
[Java 중급] 불변 객체 - 값 변경 (0) | 2024.08.12 |
[Java 중급] 불변 객체 (0) | 2024.08.12 |
[Java 중급] 공유 참조와 사이드 이펙트 (0) | 2024.08.08 |