[JAVA] java.lang패키지와 유용한 클래스 - String클래스, 문자열 비교, 빈 문자열

선영·2022년 8월 26일
0
post-thumbnail

String클래스

  • 문자열을 다루기 위한 클래스
  • String 클래스 = 데이터(char[]) + 메서드(문자열 관련)
  public final class String implements java.io.Serializable,  Comparable {
	  private char[] value; 
  • 내용을 변경할 수 없는 불변(immutable) 클래스.
  String a = "a";  //0x100번지
  String b = "b";  //0x200번지
  a = a + b;       //0x300번지 (a는 새로운 주소를 가리키게 됨.)
  • 덧셈 연산자(+)를 이용한 문자열 결합은 성능이 떨어짐.
    문자열 결합이나 변경이 잦다면, 내용을 변경 가능한 StringBuffer를 사용

문자열의 비교

  • String str = "abc";String str = new String("abc"); 의 비교
  String str1 = "abc";  // 문자열 리터럴 "abc"의 주소가 str1에 저장됨.
  String str2 = "abc";  // 문자열 리터럴 "abc"의 주소가 str2에 저장됨.
  String str3 = new String("abc");  // 새로운 String인스턴스 생성.
  String str4 = new String("abc");  // 새로운 String인스턴스 생성.
  
  // str1 == str2				str3 == str4
  // 0x100 == 0x100				0x300 == 0x400
  // true						false
  • 등가비교(==)는 주소를 비교하고, equals내용을 비교함.
    따라서, 문자열을 비교할 때에는 항상 equals를 사용해야함.

문자열 리터럴

  • 문자열 리터럴은 프로그램 실행 시 자동으로 생성됨. (constant pool 에 저장)
  • 같은 내용의 문자열 리터럴은 하나만 만들어짐.

빈 문자열 ("", empty string)

  • 내용이 없는 문자열. 크기가 0char형 배열을 저장하는 문자열.

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

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

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

  • 문자(char)와 문자열(String)의 초기화

    String s = ""; // 빈 문자열로 초기화
    char c = ''; // 공백으로 초기화


0개의 댓글