String 기본

  • 자바에서 기본형인 char는 문자 하나를 다룰 때 사용한다. 여러문자를 사용하기 위해서는 char[]를 사용해야 하지만 이 방법은 불편하기 때문에 String클래스가 생겼다.
  • String은 클래스로 참조값만 들어갈 수 있지만 편의상 문자열을 쌍 따옴표로 감싸면new String() 으로 변경해준다.

String 메서드

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

String 클래스 & 참조형

String은 본래 클래스로 기본형이 아닌 참조형이다. 참조형은 변수에 계산할 수 있는 값이 들어있는게 아닌 계산이 불가능한 참조값이 들어있어 +같은 연산은 불가능하다.

  • 자바에서는 String이 제공하는 concat()같은 메서드를 사용해야 하지만, 문자열은 자주 다루어지기 때문에 편의상 + 연산이 가능하다.

    String 비교

  • 동일성: == 연산자를 사용해서 두 객체의 참조가 동일한지를 확인
    • 문자열을 ==로 동일성을 체크하면 , 비록 같은 문자일지라도 서로 다른 인스턴스로 참조값이 달라 == 비교에는 실패한다.
  • 동등성: equals() 메서드를 사용하여 두 객체가 논리적으로 동일한지 확인
    • == 비교는 실패하지만 논리적으로는 같은 문자이기에 두 문자는 같다고 판단한다. 이를 동등성 이라한다.

불변 객체

 package lang.string.immutable;
 public class StringImmutable1 {
     public static void main(String[] args) {
         String str = "hello";
         str.concat(" java");
         System.out.println("str = " + str);
	} 
}
  • String은 불변객체이므로 str="hello" 값이 그대로 나온다.
  • 불변객체이므로 변경이 필요한 경우에는 새로운 값을 만들어서 거기에 대입하자.



String 주요 메서드

문자열 비교

  • equals(Object anObject): 두 문자열이 동일한지 비교

  • equalsIgnoreCase(String anotherString): 두 문자열을 대소문자 없이 구분

  • compareTo(String anotherString) : 두 문자열을 사전 순으로 비교

  • compareToIgnoreCase(String anotherString) :두 문자열을 대소문자 구분 없이 사전적으로 비교

  • startsWith(String perfix): 문자열이 특정 접두사로 시작하는 지 확인

  • endsWith(String suffix): 문자열이 특정 접미사로 끝나는지 확인

문자열 조작 및 변환

  • subString(int begin)/subString(int begin,int end): 문자열의 부분 문자열 반환
  • concat(String str): 문자열의 끝에 다른 문자열을 붙임
  • replace(charSequence target,charSequence replacement):특정 문자열을 새 문자열로 대체
  • replaceAll(String regex,String replace): 문자열에서 정규표현식과 일치하는 부분을 새 문자열로 변경
  • trim(): 문자열 양쪽 끝의 공백 제거
  • toLowerCase()/toUpperCase(): 문자열을 소문자나 대문자로 변환
  • strip(): whitespace와 유니코드 공백을 포함해서 제거

문자열 분할 및 조합

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

문자열 검색

  • contains(charSequence s): 문자열이 특정 문자열을 포함하고 있는지 확인
  • indexOf(String ch)/indexOf(String ch,int index): 문자열이 처음 등장하는 위치 반환
  • lastIndexOf(String ch): 문자열이 마지막으로 등장하는 위치 반환

기타

  • valueOf(Object obj): 다양한 타입을 문자열로 변환
  • toCharArray(): 문자열을 문자 배열로 변환



StringBuilder

불변 String 단점

불변인 String의 단점은 문자를 더하거나 변경할 때 마다 새로운 객체를 생성해야 한다는 점이다. 문자를 자주 더하거나 변경해야 하는 상황이면 더 많은 객체를 만들고 GC해야한다. 결과적으로 컴퓨터의 메모리 자원을 많이 소모하게 만드는 문제가 있다.

StringBuilder의 특징

이 문제를 해결하기 위해 가변의 StringStringBuilder가 만들어졌다. 가변은 내부의 값을 바로 변경하면 되므로 새로운 객체를 생성할 필요가 없어, 성능과 메모리 사용면에서 불변보다 효율적이다.

StringBuilder 사용법

profile
자바를 사랑합니다

0개의 댓글

관련 채용 정보