[개인공부] String 클래스

Walter Mitty·2022년 12월 24일
0

개인공부

목록 보기
24/40
post-thumbnail

String 클래스

: 문자열을 다루기 위한 클래스

  • String 클래스 = 데이터(char[]) + 메서드(문자열 관련)
    • char[]: 문자 배열
    • 메서드: 문자 배열을 다루는 메서드들
  • 내용을 변경할 수 없는 불면(immutable) 클래스
    a+b가 합쳐진 "ab"는, 새로운 주소값 0x300을 갖는 문자열 객체가 되고 그걸 a에 대입하면 a의 주소값은 0x300으로 바뀌고 0x100 주소값을 가진 객체와의 연결은 끊어진다.
    따라서 System.out.println(a); 를 하면 0x300의 주소값을 가진 "ab"가 불려진다.
  • 덧셈 연산자(+)를 이용한 문자열 결합은 성능이 떨어짐.
    • 위에 예시처럼 계속 새로운 객체가 만들어지므로 성능이 떨어진다.
      • 문자열 결합이나 변경이 잦다면, 내용을 변경가능한 StringBuffer를 사용한다.

문자열의 비교

  • String str = "abc"'; 와 String str = new String("abc");의 비교
    • 문자열 리터럴로 문자열을 만들면 하나의 문자열을 여러 참조변수가 공유
    • new 연산자를 사용하면 항상 새로운 문자열 객체가 생성된다.
      • 문자열은 내용 변경 불가라 여러 참조변수가 공유해도 상관없다 = 같은 값을 가지는 문자열을 여러개 만들 필요가 없다.
  • 그래서 문자열을 쓸때는 주소를 비교하는 연산자(==)가 아니라 내용을 비교하는 equals()를 써줘야한다.

문자열 리터럴

  • 문자열 리터럴은 프로그램 실행시 자동으로 생성된다.(constant pool에 저장)

빈 문자열(" ", empty string)

  • 내용이 없는 문자열.
  • 크기가 0인 char형 배열을 저장하는 문자열
String str = ""; // str을 빈 문자열로 초기화
  • 크기가 0인 배열을 생성하는 것은 어느 타입이나 가능
char[] chArr = new char[0]; //길이가 0인 char 배열
int[] iArr = {};			//길이가 0인 int 배열
  • 문자(char)와 문자열(String)의 초기화
String s = null;	// String의 기본값
char c = '\u0000';  // char의 기본값 (유니코드의 첫번째 문자)

보다는

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

가 좋은 방법이다



String 클래스의 생성자와 메서드

  • compareTo() 는 정렬할 때 사용한다.

  • int pos 는 position으로 검색 시작 위치를 말한다.

  • split()의 int limit은 문자열을 regex 로 나누는데, 2개로 나눈다.

  • valueOf() 은 값을 문자열로 변환하여 반환한다! → 알고리즘에서 진짜 자주 쓰임.

0개의 댓글