String class
✔ string class - 문자열을 다루기 위한 클래스
: 데이터(char[] // 문자배열) + 메서드 (문자열 관련)
: 내용을 변경할 수 없는 불변(immutable) 클래스
String a = "a";
String b = "b";
a = a+b; //ab 라는 완전히 새로운 객체가 만들어진 다음에 주소값이 a에 들어감.
👉 문자열 결합이 일어날때마다 새로운 객체가 만들어짐.
: 덧셈연산자 (+)를 이용한 문자열 결합은 성능이 떨어짐
: 문자열 결합이나 변경이 잦다면, 내용을 변경가능한 StringBuffer을 사용
문자열의 비교
✔ String str = "abc" 와 String str = new String("abc")의 비교
String str1= "abc"; // 문자열 리터럴 "abc"의 주소가 str1에 저장됨
String str2= "abc"; // 문자열 리터럴 "abc"의 주소가 str2에 저장됨
// str1 (0x100) == str2(0x100) > 주소값이 같음. 문자열 abc를 둘다 가리킴
// true
// 하나의 문자열을 여러 참조변수가 공유. 어차피 내용을 못바꾸므로 여러 참조변수가 공유해도됨
str1==str2 //true
str1.equals(str2) // true
----------------------------------------------------------------
String str3 = new String("abc"); // 새로운 String 인스턴스 생성
String str4 = new String("abc"); // 새로운 String 인스턴스 생성
// str3(0x200)==str4(0x300)
// 각각의 객체를 생성해서 가리키고 있으므로 주소값이 다름
// false
// new 연산자로 인해 항상 새로운 문자열이 만들어짐. 같은 값이 있을 경우 비효율적이됨
str3==str4 // false
str3.equals(str4) // true
문자열 리터럴
: 문자열 리터럴은 프로그램 실행시 자동으로 생성된다 (constant pool: 상수저장소 에 자동으로 저장)
: 같은 내용의 문자열 리터럴은 하나만 만들어진다. 여러참조변수가 동시에 공유.
빈 문자열 (" " , empty String)
: 내용이 없는 문자열. 크기가 0인 char인 배열을 저장하는 문자열.
: 숫자를 문자로 변경할때나 초기화에 주로 사용됨
String str = " " ; // str을 빈 문자열로 초기화
: 크기가 0인 배열을 생성하는 것은 어느 타입이나 가능.
char [ ] chArr = new char [0]; // 길이가 0인 char 배열
int [ ] iArr = { }; // 길이가 0인 int 배열. 크기는 4byte*0(길이) = 0
✔ 문자(char)와 문자열(String)의 초기화
string s = null; // 기본값 👉 string s = " "; // 초기화
char c = '\0000'; // 기본값 👉 char c = ' ' ; // 초기화
'🔥 Vamos > Java' 카테고리의 다른 글
1028 | 자바의 정석 기초편 :: ch9-12~9-18 (0) | 2022.10.28 |
---|---|
1027 | 자바의 정석 기초편 :: ch9-11 (0) | 2022.10.27 |
1026 | 자바의 정석 기초편 :: ch9-1~9~6 (0) | 2022.10.26 |
1025 | 자바의 정석 기초편 :: ch8-18 (0) | 2022.10.25 |
1025 | 자바의 정석 기초편 :: ch8-15~8-17 (0) | 2022.10.25 |