java.lang패키지(3) - String 클래스(1)

2021. 12. 24. 21:59·자바/java.lang 패키지

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) (tistory.com)

 

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
'자바/java.lang 패키지' 카테고리의 다른 글
  • java.lang패키지(5) - StringBuffer 클래스와 StringBuilder 클래스
  • java.lang패키지(4) - String 클래스(2)
  • java.lang 패키지(2) - Object 클래스(2)
  • java.lang 패키지(1) - Object 클래스(1)
백_곰
백_곰
  • 백_곰
    친절한 코딩
    백_곰
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 알고리즘 (with JAVA)
        • 기본 알고리즘
        • 완전 탐색
        • 분할 정복 알고리즘
        • 동적 계획법
        • 탐욕법
        • 코딩 테스트 기출 문제
        • 코드트리 조별과제
      • 백준 (with JAVA)
        • 완전 탐색
        • 분할 정복
        • 그 외
      • 자바
        • 개발 환경 구축하기
        • 팁
        • 기본적인 개념
        • 컬렉션 프레임워크
        • 프로세스와 쓰레드
        • 지네릭스
        • 람다식
        • 스트림
        • 입출력 IO
        • 네트워킹
        • 열거형(enums)
        • java.lang 패키지
        • java.time 패키지
        • 유용한 클래스들
        • 형식화 클래스들
      • 안드로이드 with 자바
        • 응용 문제들
        • 자잘한 문제들
        • 오류 보고서
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

      코드트리
      outputstream
      유용한 클래스
      ServerSocket
      코딩테스트
      제자리 정렬
      java.lang패키지
      snail
      안정 정렬
      InputStream
      알고스팟
      map()
      TCP 소켓 프로그래밍
      java.time 패키지
      선택 정렬
      람다식
      역직렬화
      다형성
      file
      문자 기반 스트림
      코딩트리조별과제
      자바 개념
      안드로이드 스튜디오
      중간연산
      Collections Framework
      Arrays
      스트림
      serializable
      불안정 정렬
      소켓 프로그래밍
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.3
    백_곰
    java.lang패키지(3) - String 클래스(1)
    상단으로

    티스토리툴바