-
[JAVA] String클래스JAVA 2022. 8. 5. 11:39728x90반응형
1. String 클래스 정보
- 문자열을 다루기 위한 클래스
- 데이터(char []) + 메서드(문자열 관련)
- 내용을 변경할 수 없는 불변(immutable) 클래스이다.
class StringTest1{ String a = "a"; String b = "b"; void StringSum(){ a = a + b; // "ab" } }어떻게 내용을 변경할 수 없는 불변의 String클래스가 변경이 되는지에 대해 알아보겠습니다.
- 참조 변수 a에는 문자열 리터널 "a"의 주소가 담깁니다. (예: 주소 : 0X100)
- 참조 변수 b에는 문자열 리터널 "b"의 주소가 담깁니다. (예: 주소 : 0X200)
- 문자열 리터널 "a"와 "b"를 합친 결과는 새로운 문자열 리터널 "ab"가 됩니다. (예: 주소 : 0X300)
- 참조 변수 a에 문자열 리터럴 "ab"의 주소(0X300)를 대입합니다.
내용이 변경되는 게 아니라 새로운 값을 받는 개념이며 이러한 문자열의 덧셈 연산은 성능이 떨어지는 편입니다.
이러한 문제를 해결하기 위해 StringBuffer클래스를 사용하는 것이 좋습니다.
- 문자열의 결합이나 변경이 잦을때 StringBuffer클래스 사용
2. 리터럴과 생성의 차이
class StringTest2{ // str1과 str2의 주소값은 같다. String str1 = "abc"; String str2 = "abc"; // str3와 str4의 주소값은 다르다. String str3 = new String("abc"); String str4 = new String("abc"); }- 문자열 리터널 값이 같다면 참조 변수에 대입되는 주소 값은 모두 같습니다.
- 새로운 String인스턴스를 생성하는 경우는 각자 다른 인스턴스이기 때문에 주소 값이 다릅니다.
3. 초기화
class StringTest3{ String str1 = ""; // 빈문자열로 초기화 String str2 = new String(""); // 빈문자열로 초기화 char c = ' '; // 공백으로 초기화 (최소 공백 1개) // Java에서는 크기가 0인 배열을 생성하는 것은 어느 타입이나 가능합니다. int[] iArr = {}; char[] chArr = new char[0]; }728x90반응형'JAVA' 카테고리의 다른 글
[JAVA] StringBuffer클래스의 메서드 (0) 2022.08.08 [JAVA] String클래스의 생성자와 메서드 (0) 2022.08.05 [JAVA] Object Class 1편 equals hashCode toString clone 메서드 (1) 2022.08.04 [JAVA] 예외처리 (1) 2022.08.03 [JAVA] 객체지향 추상클래스 인터페이스 내부클래스 (0) 2022.08.03