Java:String

aiden·2023년 9월 7일

Java

목록 보기
10/30

String

String은 java.lang 패키지에 포함된 클래스로 문자열 처리를 위한 클래스이다. String 객체는 다양한 생성자를 가지고 있어 다음과 같이 여러 방법으로 생성 가능하다.

String str1 = "string";
String str2 = new String("string");

chr c[] = {'s', 't', 'r', 'i', 'n', 'g'};
string str3 = new String(c);

스트링 리터럴, 스트링 객체

문자열 중 스트링 리터럴과 new String()으로 생성된 스트링 객체에는 차이가 있다. 스트링 리터럴은 리터럴 테이블로 관리하며 동일한 리터럴은 공유하여 사용된다. 스트링 객체는 new를 통해 생성되는 다른 객체들과 동일하게 힙 메모리에 생성되며 이 객체들은 공유되지 않는다. 그림을 통해 차이를 이해할 수 있다.

스트링 객체와 리터럴은 생성되면 수정이 불가하다. 여러 레퍼런스가 하나의 문자열을 가리킨다고 해도 임의로 수정할 수 없으므로 공유에 문제가 없다.

String 클래스 메소드

다음은 String 클래스의 주요 메소드이다.

문자열 비교:equals()

두 문자열을 비교할 때 비교 연산자 ==가 아닌 equals() 메소드를 사용한다.

  • == : 레퍼런스 비교
  • equals() : 내용 비교

연산자 ==는 레퍼런스가 가리키고 있는 객체가 동일한지를 비교하고, equals()는 문자열의 내용을 비교한다.

이전 글 참고 : https://velog.io/@aiden_lee/JavaPackage#:~:text=String%20%EB%98%90%ED%95%9C%20%EA%B0%9D%EC%B2%B4%EC%9D%B4%EB%A9%B0%20equals()%20%EB%A9%94%EC%86%8C%EB%93%9C%EB%A5%BC%20%EC%98%A4%EB%B2%84%EB%9D%BC%EC%9D%B4%EB%94%A9%ED%95%98%EC%97%AC%20%EA%B0%80%EC%A7%80%EA%B3%A0%20%EC%9E%88%EA%B8%B0%20%EB%95%8C%EB%AC%B8%EC%97%90%20equals%EB%A5%BC%20%EC%9D%B4%EC%9A%A9%ED%95%98%EB%A9%B4%20%EB%91%90%20%EB%AC%B8%EC%9E%90%EC%97%B4%EC%9D%98%20%EB%82%B4%EC%9A%A9%EC%9D%B4%20%EB%8F%99%EC%9D%BC%ED%95%9C%EC%A7%80%20%EB%B9%84%EA%B5%90%ED%95%A0%20%EC%88%98%20%EC%9E%88%EB%8B%A4.

문자열 비교:compareTo()

int compareTo(String anotherString) 메소드는 현재 문자열과 매개변수로 전달된 문자열을 사전 순으로 비교하여 두 문자열 내용이 동일하면 0, 현재 문자열이 앞서면 음수, 현재 문자열이 뒤에 나오면 양수를 리턴한다.

문자열 연결:concat(String str)

String concat(String str) 메소드는 연재 문자열과 매개변수에 전달된 문자열을 연결하여 하나의 문자열로 리턴한다.
자바에서는 + 연산자로 문자열을 연결하는 것도 가능하다.

공백 제거:trim()

String trim() 메소드는 문자열의 앞뒤에 있는 모든 공백 문자를 제거하여 새로운 문자열을 리턴한다. 문자열 사이에 있는 공백 문자는 제거되지 않는다.

문자열의 문자:charAt()

char charAt(int index) 메소드를 이용하면 매개변수로 전달한 인덱스 위치의 문자를 char 타입으로 리턴한다.

StringBuffer 클래스

StringBuffer는 java.lang 패키지에 포함된 클래스로 문자열을 다룬다. String 객체의 경우 문자열 자체를 수정할 수 없지만 StringBuffer 객체는 문자열을 가변 버퍼에 저장하기 때문에 저장된 문자열을 수정할 수 있다. 이 가변 버퍼는 문자열의 크기에 따라 내부 버퍼 크기가 자동으로 조절된다. StringBuffer 객체는 다음과 같이 생성한다.

StringBuffer sb = new StringBuffer("java");

StringBuffer 클래스의 주요 메소드는 다음과 같다.

StringBuffer append(String str) //str 스트링을 버퍼에 덧붙임
StringBuffer append(StringBuffer sb) //sb 스트링 버퍼를 현재 버퍼에 덧붙여 현재 버퍼에 갱신
int capacity() //스트링 버퍼의 현재 크기 리턴
StringBuffer delete(int start, int end) //start부터 end 이전 위치까지 문자열 부분 삭제
StringBuffer insert(int offset, String str) //str 스트링을 버퍼의 offset 위치에 삽입
StringBuffer replace(int start, int end, String str) //버퍼의 start 위치부터 end 이전 위치까지 str로 대치
StringBuffer reverse() //버퍼 내의 문자열을 반대 순서로 변경

StringTokenizer 클래스

StringTokenizer 클래스는 java.util 패키지 내의 클래스로 하나의 문자열을 여러 개로 분리하기 위해 사용된다. 문자열 분리 시 사용되는 기준 문자를 구분 문자(delimiter), 구분 문자에 의해 분리된 문자열을 토큰(token)이라 한다.
StringTokenizer 객체 생성자에 문자열만 전달하면 공백을 기준으로 문자열을 분할하고, 문자열과 delimiter를 전달하면 구분 문자를 기준으로 문자열을 분할한다. StringTokenizer 클래스의 생성자는 다음과 같다.

StringTokenizer(String str) //공백 기준 문자열 분할
StringTokenizer(String str, String delim) //delimiter 기준 문자열 분할
StringTokenizer(String str, String delim, boolean returnDelims) //returnDelims가 true이면 토큰에 delim 포함한 문자열로 분할 저장

다음과 같은 구조를 가진다.

StringTokenizer 클래스의 주요 메소드는 다음과 같다.

int countTokens() //분리한 토큰 개수 리턴
boolean hasMoreTokens() //스트링 토크나이저에 다음 토큰이 있으면 true 리턴
String nextToken() //스트링 토크나이저에 저장된 다음 포큰 리턴
profile
파인애플 좋아하세요?

0개의 댓글