charAt()
은 문자열에 index
값을 통해 문자를 읽어오는 방법으로 String
타입으로 받은 문자열을 char
타입으로 한 글자만 추출 해주는 함수이다.
String str = "안녕";
str.charAt(0); = 안
str.charAt(1); = 녕
nextLine()
: Enter를 치기 전까지 쓴 문자열을 모두 리턴, 공백까지 읽어옴next()
: 공백 전까지 입력받은 문자열을 리턴 reverse()
은 저장되어 있는 문자열의 순서를 거꾸로 나열하는 메서드이다.
StringBuffer
클래스 또는 StringBuilder
클래스 통해 reverse()
를 사용할 수 있다.
Java에서 String
인스턴스로 생성된 문자열은 변경할 수 없지만, StringBuffer
클래스를 사용하면 변경이 가능하다. StringBuffer
는 내부적으로 문자열을 편집할 수 있는 버퍼(buffer)를 유지하며, 인스턴스를 생성할 때 크기를 지정할 수도 있다.
🔎 주요 메서드
.append( )
: StringBuffer 인스턴스가 저장하고 있는 문자열 뒤에 덧붙임.delete(int start, int end)
: 시작 위치(start)부터 끝 위치(end) 사이에 있는 문자를 제거 (단, 끝 위치의 문자는 제외).deleteCharAt(int index)
: 지정된 위치(index)의 문자를 제거.insert(int pos, String str)
: 두번째 매개변수로 받은 값을 문자열로 변환하여 지정된 위치(pos)에 추가 (pos는 0부터 시작).replace(int start, int end, string str)
: 지정된 범위(start ~ end)의 문자들을 주어진 문자열로 바꿈 (end 위치의 문자는 범위에 포함 되지않음!).reverse( )
: 문자열의 순서를 거꾸로 나열.setCharAt(int index, char ch)
: 지정된 위치의 문자를 주어진 문자(ch)로 바꿈.toString( )
: StringBuffer 인스턴스의 문자열을 String으로 반환.subString(int start)
/.subString(int start, int end)
: 지정된 범위 내의 문자열을 String으로 뽑아서 반환public class Main {
public static void main(String[] args) {
String str = "abcde";
StringBuffer sb = new StringBuffer(str);
sb.reverse().toString();
System.out.println(sb);
}
}
StringBuffer
는 멀티스레드 환경에서 안전하도록 동기화(synchronization)되어 있다. 그러나 멀티스레드를 사용하지 않는 프로그램에서는 이 동기화 기능이 불필요한 성능 저하를 초래할 수 있다.
이를 해결하기 위해 StringBuffer
에서 동기화 기능만 제거한 StringBuilder
가 제공된다. 두 클래스는 동일한 기능을 갖고 있으므로, 단일 스레드 환경에서는 StringBuffer
대신 StringBuilder
로 간단히 대체할 수 있다.
int num = 1234;
new StringBuilder() // StringBuilder 객체 생성
.append(num) // "1234" 추가
.reverse() // "4321"으로 변환
.toString() // 문자열 변환 → "4321"
Integer.parseInt("4321") // 정수 변환 → 4321
new StringBuilder()
: 문자열을 변경할 수 있도록 제공되는 클래스.append(num)
: num 값을 StringBuilder
에 추가. num이 숫자라면, String.valueOf(num)
이 내부적으로 호출되어 문자열로 변환됨.reverse()
: StringBuilder 내부의 문자열을 뒤집음(반전).toString()
: StringBuilder를 일반 String으로 변환Integer.parseInt(...)
: 문자열을 정수(int)로 변환