자바의 정석 - String 클래스, 문자열 비교, 빈 문자열

Yohan·2024년 2월 2일
0

String 클래스

  • 문자열을 다루기 위한 클래스
  • String 클래스 = 데이터(char[]) + 메서드(문자열 관련)
  • 내용을 변경할 수 없는 불변클래스
String a = "a";
String b = "b";
a = a + b; // "ab"가 됨, 문자열 결합
  • 덧셈 연산자를 이용한 문자열 결합은 성능이 떨어짐..
  • 문자열의 결합이나 변경이 잦다면, 내용을 변경가능한 StringBuffer를 사용

문자열의 비교

  • String str = "abc";와 String str = new String("abc");의 비교
    • 문자열리터럴은 같은 값을 가르킴 (새로운 문자열 X)
    • new 연산자를 이용해서 객체를 생성하면 내용이 같아도 항상 새로운 문자열이 만들어짐. 즉, 같은 값이지만 주소가 다름 (새로운 문자열 O)
// str1, str2은 같은 abc를 가르킴
// str3, str4는 다른 abc를 가르킴
String str1 = "abc"; // 문자열 리터럴, "abc"의 주소가 str1에 저장
String str2 = "abc"; // 문자열 리터럴, "abc"의 주소가 str2에 저장
String str3 = new String("abc"); // 새로운 String 인스턴스를 생성
String str4 = new String("abc"); // 새로운 String 인스턴스를 생성

// 비교할 때는 == 보다는 내용비교인 equals()를 이용해서 비교

// 주소비교
str1 == str2 ? true
str3 == str4 ? false

// 내용비교
str1.equals(str2) ? true
str3.equals(str4) ? true

문자열 리터럴

  • 프로그램 실행 시 자동으로 생성
  • 같은 내용의 문자열 리터럴은 하나만 만들어진다. (위 예시에서 str1, str2에서 "abc";를 생성했을 때 "abc"는 하나만 만들어짐)

빈 문자열 ("", empty String)

  • 내용이 없는 문자열. 크기가 0인 char형 배열을 저장하는 문자열
String str = ""; // str을 빈 문자열로 초기화
  • 크기가 0인 배열을 생성하는 것은 어느 타입이나 가능
char[] chArr = new char[0]; // 길이가 0인 char배열
int[] iArr = {};			// 길이가 0인 int배열	
  • 문자(char)와 문자열(String)의 초기화
char c = ' '; // 문자(char)는 공백으로 초기화
String s = ""; // 문자열(String)은 빈 문자열로 초기화
String s = new String(""); // 이렇게 작성 X
profile
백엔드 개발자

0개의 댓글