충분히 쌓여가는
String 클래스, 문자열 비교, 빈 문자열 본문
String 클래스
문자열을 다루기 위한 클래스
String 클래스 = 데이터(char[]) + 메서드(문자열 관련)
내용을 변경할 수 없는 불변(immutable) 클래스
덧셈 연산자(+)를 이용한 문자열 결합은 성능이 떨어짐
문자열의 결합이나 변경이 잦다면, 내용을 변경가능한 StringBuffer를 사용
String a = "a";
String b = "b";
a = a + b;
문자열 비교
String str = "abc"와 String str = new String("abc");의 비교
String str1 = "abc"; // 문자열 리터럴 "abc"의 주소가 str1에 저장됨
String str2 = "abc"; // 문자열 리터럴 "abc"의 주소가 str2에 저장됨
String str3 = new String("abc"); // 새로운 String 인스턴스를 생성
String str4 = new String("abc"); // 새로운 String 인스턴스를 생성
문자열 리터럴
문자열 리터럴은 프로그램 실행 시 자동으로 생성된다(constant pool[상수 저장소]에 저장)
class StringTest {
public static void main(String args[]) }
String s1 = "AAA";
String s2 = "AAA";
String s3 = "AAA";
String s4 = "BBB";
}
}
같은 내용의 문자열 리터럴은 하나만 만들어진다
빈 문자열(empty string)
내용이 없는 문자열, 크기가 0인 char 형 배열을 저장하는 문자열
String str = ""; // str을 빈 문자열로 초기화
크기가 0인 배열을 생성하는 것은 어느 타입이나 가능
char[] chArr = new char[0]; // 길이가 0인 char 배열
int[] iArr = {}; // 길이가 0인 int 배열
문자(char)와 문자열(String)의 초기화
new 연산자를 사용하여 저장할 내용이 없어도 새로운 배열이 계속 만들어 지는 것보다, 하나의 빈 문자열을 str4, str5, str5가 공유하기 때문에 메모리를 조금이나마 절약할 수 있다
'Java > JAVA2' 카테고리의 다른 글
StringJoiner, 문자열과 기본형 반환 (0) | 2023.06.26 |
---|---|
String 클래스의 생성자와 메서드 (0) | 2023.06.26 |
Object 클래스와 equals(), equals(Object obj)의 오버라이딩 (0) | 2023.06.25 |
toString(), toString()의 오버라이딩 (0) | 2023.06.25 |
hashCode() (0) | 2023.06.25 |