/ JAVAJUNGSUK

Ch9-7~10. String 클래스

자바의 정석 기초편

0. 목차



Chapter9. java.lang 패키지와 유용한 클래스

Ch9 - 7. String 클래스

Ch9 - 8. 문자열(String)의 비교

Ch9 - 9. 문자열 리터럴(String리터럴)

Ch9 - 10. 빈 문자열(empty string)



Ch9 - 7. String 클래스


▶ String 클래스란?

▷ 문자열을 다루는 데 사용되는 클래스
▷ String 클래스 = 데이터(char[] : 문자 배열) + (String 관련)메서드
  • String 클래스 code
      public final class String implements java.io.Serializable, Comparable {
          private char[] value; // private으로 문자 배열을 가짐
          ... // 문자열과 관련된 메서드들이 있음
      }
    
▷ immutable class : 내용을 변경할 수 없는 불변 클래스


▶ StringBuffer

▷ StringBuffer : 내용 변경 가능, String처럼 불변X
▷ 덧셈 연산자를 이용한 문자열 결합은 성능 저하
▷ 저장 공간 하나에서 덧셈을 하는게 아니라, 계속 저장 공간을 만들어야 하니까
▷ 이렇게 변경이 잦을 때, 내용 변경 가능한 StringBuffer 사용



Ch9 - 8. 문자열(String)의 비교


String str = "abc" vs String str = new String("abc")

String str = "abc"


String str = new String("abc")


항상 새로운 문자열이 만들어짐


== vs equals

== : 주소 비교
equals : 내용 비교


String은 equals로 내용 비교!



Ch9 - 9. 문자열 리터럴(String리터럴)


▶ 문자열 리터럴은?

▷ 프로그램 실행 시 자동으로 생성
new String("abc")이렇게 안해도 자동 생성
▷ constant pool(상수 저장소)에 저장
▷ 리터럴 : 상수
▷ string 객체 = 불변!
▷ 같은 내용의 문자열 리터럴은 하나만 생성




Ch9 - 10. 빈 문자열(empty string)


▶ 빈 문자열(empty string)이란?

▷ “”
▷ 내용이 없는 문자열
▷ 크기가 0인 char형 배열을 저장하는 문자열

String str = ""; // str을 빈 문자열로 초기화

▷ 크기가 0인 배열을 생성하는 것은 어느 타입이나 가능

char[] chArr = new char[0]; // length가 0인 char배열
int[] iArr = {}; // length가 0인 int배열

  • 배열의 길이 vs 배열의 크기
    엄밀히 말하면 길이와 크기는 다름
    new int[10]
    • int = 4byte
      4byte가 10개 = 4byte × 10 = 40byte
      • 길이(length) : 10
      • 크기(size) : 40byte
▷ 문자(char)와 문자열(String)의 초기화
  • 기본값(유니코드 첫번째 문자) : 거의 사용X
    String s = null;
    char c = '\u0000';
    
  • String : "" 빈 문자열
  • char : ' ' 공백
    String s = "";
    char c = ' ';