1. 변경 불가능한(immutable) 클래스
- 변경 불가능한 클래스는 아래의 예시를 통해 이해하자.
(1) String 클래스의 참조변수 a와 b가 있는데, 각각 "a"와 "b"를 가지고 있다고 가정한다.
(2) 이 둘을 합쳐서 참조변수 a에 저장하면 "ab" 문자열이 저장된다.
( 그러나 이것은 변경된 것이 아니라 새로운 인스턴스를 생성된 것이고 기존에 "a"가 저장된 주소공간을
가리키는 것이 아니라 새로 생성된 인스턴스 공간을 가리키게 되는 것이다. )
( 단, 이러한 작업은 메모리 공간을 더욱 늘리게 되므로, 결합횟수를 줄이는 것이 좋다. )
( 만약 문자열간의 결합이나 추출 등 문자열을 다루는 작업이 많은 경우에는 String 클래스 대신
StringBuffer 클래스를 사용하는 것이 좋다. )
2. 문자열 비교
( == 비교는 주소 비교이므로, 아래의 코드는 false가 나오게 된다. )
( 그러므로, 적절히 eqauls()를 사용하여 비교한다. )
3. 문자열 리터럴
- 자바 소스 파일에 포함된 모든 문자열 리터럴은 컴파일 시에 클래스 파일에 저장된다.
- 이때, 같은 내용의 문자열 리터럴은 한번만 저장된다.
- 클래스 파일에는 소스파일에 포함된 모든 리터럴의 목록에 있다.
- 해당 클래스 파일이 클래스 로더에 의해 메모리에 올라갈 때, 이 리터럴의 목록에 있는 리터럴들이
JVM내에 있는 '상수 저장소(constant pool)'에 저장된다.
4. 빈 문자열
5. String 클래스의 생성자와 메서드
- 중요하다고 생각되는 부분만 꼽았다.
(1) String(StringBuffer buf)
(2) int compareTo(String str)
( 문자열과 사전순서로 비교하며, 0이면 같고, -1이면 이전이고, 1이면 이후이다. )
(3) String concat(String str)
(4) boolean contains(CharSequence s)
(5) boolean startsWith(String prefix)
(6) boolean endsWith(String suffix)
(7) int indexOf(int ch)
(8) int indexOf(int ch, int pos)
(9) int indexOf(String str)
(10) int lastIndexOf(int ch)
(11) int lastIndexOf(String str)
(12) String intern()
( intern() 메서드는 인스턴스의 문자열을 상수풀(constant pool)에 등록한다. 만약 그 이후로 똑같은 문자열을
등록한다면, 같은 위치의 주소값을 반환한다. )
(13) String replace(char old, char nw) + String replace(CharSequence old, CharSequence nw)
(14) String replaceFirst(String regex, String replacement)
(15) String[] split(String regex)
(16) String[] split(String regex, int limit)
(17) String substring(int begin) + String substring(int begin, int end)
(18) String toUpperCase() + String toLowerCase()
(19) String trim()
(20) static String valueOf(boolean, char, int, long, float, double, Object)
- 이 메서드는 매개변수로 지정된 값을 문자열로 반환한다.
- 만약 참조변수라면, toString() 메서드를 호출한 결과를 반환한다.
다음장
java.lang패키지(4)
1. join()과 StringJoiner 클래스 - join()은 split()과 반대의 역할을 한다. - 아래의 코드를 보자. - 또한 java.util.StringJoiner 클래스를 사용해서 문자열을 결합할 수 있다. - 아래의 코드를 보자. 2. 문..
kind-coding.tistory.com
'자바 > java.lang 패키지' 카테고리의 다른 글
java.lang패키지(6) - Math 클래스 (0) | 2021.12.27 |
---|---|
java.lang패키지(5) - StringBuffer 클래스와 StringBuilder 클래스 (0) | 2021.12.26 |
java.lang패키지(4) - String 클래스(2) (0) | 2021.12.26 |
java.lang 패키지(2) - Object 클래스(2) (0) | 2021.12.24 |
java.lang 패키지(1) - Object 클래스(1) (0) | 2021.12.22 |