본문 바로가기

언어 기초/JAVA

String클래스 [JAVA | 학습을 위한 자료 | 김영한 자바 중급 1편]

String 클래스

String은 클래스이다. 따라서 기본형이 아니라 참조형이다.

String은 불변 객체이다. 따라서 생성 이후에 절대로 내부의 문자열 값을 변경할 수 없다.

String.concat()은 내부에서 새로운String 객체를 만들어서 반환한다. 따라서 불변과 기존 객체의 값을 유지한다.

속성(필드)

private final char[] value;

여기에는 String의 실제 문자열 값이 보관된다. 문자 데이터 자체는 char[]에 보관된다. String클래스는 개발자가 직접 다루기 불편한 char[]을 내부에 감추고 String`클래스를 사용하는 개발자가 편리하게 문자열을 다룰 수 있는 수 있도록 다양한 기능을 제공한다. 그리고 메서드 제공을 넘어서 자바 언어 차원에서도 여러 편의 문법을 제공한다.

기능(메서드) String클래스는 문자열로 처리할 수 있는 다양한 기능을 제공한다. 기능이 방대하므로 필요한 기능이 있으면 검색하거나 API 문서를 찾아보자.

  • length(): 문자열의 길이를 반환한다.
  • charAt(int index): 특정 인덱스의 문자를 반환한다.
  • substring(int beginIndex, int endIndex) : 문자열의 부분 문자열을 반환한다.
  • indexOf(String str) : 특정 문자열이 시작되는 인덱스를 반환한다.
  • toLowerCase(), toUpperCase(): 문자열을 소문자 또는 대문자로 변환한다.
  • trim() : 문자열 양 끝의 공백을 제거한다.
  • concat(String str) : 문자열을 더한다.

String클래스 비교할 때는 == 비교가 아니라 항상 equals() 비교를 해야한다.

  • 동일성(Identity): == 연산자를 사용해서 두 객체의 참조가 동일한 객체를 가리키고 있는지 확인
  • 동등성(Equality): equals() 메서드를 사용하여 두 객체가 논리적으로 같은지 확인

문자열 정보 조회

  • length()` : 문자열의 길이를 반환한다.
  • isEmpty()` : 문자열이 비어 있는지 확인한다. (길이가 0)
  • isBlank()` : 문자열이 비어 있는지 확인한다. (길이가 0이거나 공백(Whitespace)만 있는 경우), 자바 11
  • charAt(int index)` : 지정된 인덱스에 있는 문자를 반환한다.

문자열 비교

  • equals(Object anObject)` : 두 문자열이 동일한지 비교한다.
  • equalsIgnoreCase(String anotherString)` : 두 문자열을 대소문자 구분 없이 비교한다.
  • compareTo(String anotherString)` : 두 문자열을 사전 순으로 비교한다.
  • compareToIgnoreCase(String str)` : 두 문자열을 대소문자 구분 없이 사전적으로 비교한다.
  • startsWith(String prefix)` : 문자열이 특정 접두사로 시작하는지 확인한다.
  • endsWith(String suffix)` : 문자열이 특정 접미사로 끝나는지 확인한다.

문자열 검색

  • contains(CharSequence s)` : 문자열이 특정 문자열을 포함하고 있는지 확인한다.
  • indexOf(String ch) / indexOf(String ch, int fromIndex) : 문자열이 처음 등장하는 위치를 반환한다.
  • astIndexOf(String ch)` : 문자열이 마지막으로 등장하는 위치를 반환한다.

문자열 조작 및 변환

  • substring(int beginIndex)/substring(int beginIndex, int endIndex)` : 문자열의 부분 문자열을 반환한다.
  • concat(String str)` : 문자열의 끝에 다른 문자열을 붙인다.
  • replace(CharSequence target, CharSequence replacement): 특정 문자열을 새 문자열로 대체한다.
  • replaceAll(String regex, String replacement)` : 문자열에서 정규 표현식과 일치하는 부분을 새 문자열로 대체한다.
  • replaceFirst(String regex, String replacement)` : 문자열에서 정규 표현식과 일치하는 첫 번째 부분을 새 문자열로 대체한다.
  • toLowerCase()/toUpperCase()` : 문자열을 소문자나 대문자로 변환한다.
  • trim(): 문자열 양쪽 끝의 공백을 제거한다. 단순Whitespace` 만 제거할 수 있다.
  • strip():Whitespace` 와 유니코드 공백을 포함해서 제거한다. 자바 11

문자열 분할 및 조합

  • split(String regex)` : 문자열을 정규 표현식을 기준으로 분할한다.
  • join(CharSequence delimiter, CharSequence... elements): 주어진 구분자로 여러 문자열을 결합한다.

기타 유틸리티

  • valueOf(Object obj): 다양한 타입을 문자열로 변환한다.
  • toCharArray(): 문자열을 문자 배열로 변환한다.
  • format(String format, Object... args) : 형식 문자열과 인자를 사용하여 새로운 문자열을 생성한다.
  • matches(String regex) : 문자열이 주어진 정규 표현식과 일치하는지 확인한다.