String 클래스의 메서드

이용만·2023년 2월 19일
0
  1. charAt() 메서드
  • 해당 문자열의 특정 인덱스에 해당하는 문자를 반환한다. 문자열의 길이보다 큰 인덱스나 음수는 오류가 발생한다.
  1. compareTo() 메서드
  • compareTo() 메서드는 해당 문자열을 인수로 전달되 문자열과 사전 편찬 순으로 비교한다. 문자열을 비교할 때 대소문자를 구분하여 비교한다. 만약 두 문자열이 같다면 0을 반환하고, 해당 문자열이 인수로 전달된 문자열보다 작으면 음수를, 크면 양수를 반환한다. 만약 문자열을 비교할 때 대소문자를 구분하지 않기를 원한다면 compareToIgnoreCase() 메서드를 사용하면 된다.
String str = new String("abcd");
System.out.println("문자열 : " + str);
System.out.println(str.compareTo("bcef"));
System.out.println(str.compareTo("abcd") + "\n");
System.out.println(str.compareTo("Abcd"));
System.out.println(str.compareToIgnoreCase("Abcd"));
System.out.println("compareTo() 메서드 호출 후 문자열 : " + str);
  1. concat() 메서드
  • 해당 문자열의 뒤에 인수로 전달된 문자열을 추가한 새로운 문자열을 반환한다.
String str = new String("abcd");
System.out.println("문자열 : " + str);
System.out.println(str.compareTo("bcef"));
System.out.println(str.compareTo("abcd") + "\n");
System.out.println(str.compareTo("Abcd"));
System.out.println(str.compareToIgnoreCase("Abcd"));
System.out.println("compareTo() 메서드 호출 후 문자열 : " + str);
  1. indexOf() 메서드
  • 해당 문자열에서 특정 문자나 문자열이 처음으로 등장하는 위치의 인덱스를 반환한다. 만약 해당 문자열에 전달된 문자나 문자열이 포함되어 있지 않으면 -1을 반환한다.
  1. toLowerCase()와 toUpperCase()메서드
  • 해당 문자열의 모든 문자를 소문자로 변환, 또한 toUpperCase() 메서드는 해당 문자열의 모든 문자를 대문자로 변환.

StringTokenizer

  • 우리가 지정한 구분자로 문자열을 쪼개주는 클래스. 쪼개어진 문자열을 토큰이라고 부른다.
import java.util.StringTokenizer;

public class Main {
	public static void main(String[] args){
		String str = "This is a string example using StringTokenizer";
		StringTokenizer tokenizer = new StringTokenizer(str);
		System.out.println(str);
		System.out.println();
		
		System.out.println("total tokens:"+tokenizer.countTokens());
		
		while(tokenizer.hasMoreTokens()){
			System.out.println(tokenizer.nextToken());
		}
		System.out.println("total tokens:"+tokenizer.countTokens());
	}
}
  • countTokens() : 남아있는 token의 개수를 반환
  • hasMoreElemets(), hasMoreTokens() : 두 메서드의 성능 차이는 없으며 둘다 동일한 값을 반환한다. 현재 위치 뒤에 있는 문자열에서 하나 이상의 토큰을 사용할 수 있는 경우 true를 그렇지 않으면 false를 반환한다.
  • nextElement(), String nextToken() : 다음의 토큰을 반환한다. nextElement는 Object를 nextToken은 String을 반환한다.

StringBuilder / StringBuffer

StringBuilder

String 클래스의 인스터는 여러개의 문자열을 더할 때 매번 새로운 인스턴스를 생성해야 되기에 예시로 100만개의 문자열이 있다면 모두 더하는 작업이 필요할 경우 인스턴스 생성과정은 100만번 이루어지기 때문에 매우 비효율적이기에 이 문제를 해결하기 위해 StringBuilder를 사용한다.

public class Main {
    public static void main(String[] args) {
       StringBuilder stringBuilder = new StringBuilder();
       stringBuilder.append("문자열").append("연결");
       String str = stringBuilder.toString(); // str변수에 toString메서드를 이용해 문자열 할당
        System.out.println(stringBuilder); // 문자열 연결
        System.out.println(str); // 문자열 연결
    }

StringBuffer

String클래스의 인스턴스는 한 번 생성되면 그 값을 읽기만 하고 변경할 순 없다. 그래서 StringBuffer 클래스를 통해 클래스의 인스턴스 값을 변경할 수도 추가할 수도 있다.

  • append() : 해당 문자열의 마지막에 추가한다. concat()메서드와 같은 결과를 반환하지만 내부적인 처리 속도가 훨씬 빠르다.
StringBuffer str = new StringBuffer("Java"); 
System.out.println("문자열 : " + str); // 문자열 : Java
System.out.println(str.append(" programming")); 
System.out.println("append() 메서드 호출 후 문자열 : " + str); // Java programming
  • capacity() : StringBuffer 인스터스의 현재 버퍼 크기를 반환한다.
StringBuffer str01 = new StringBuffer();
StringBuffer str02 = new StringBuffer("Java");
System.out.println(str01.capacity()); // 16
System.out.println(str02.capacity()); // 20
  • delete() : 전달된 인덱스에 해당되는 부분 문자열을 해당 문자열에서 제거한다. 또한 deleteCharAt() 메서드를 사용하면 특정 위치의 문자 한개만 제거할 수 있다.
StringBuffer str = new StringBuffer("Java Oracle");
System.out.println("문자열 : " + str);
System.out.println(str.delete(4, 8));
System.out.println(str.deleteCharAt(1));
System.out.println("deleteCharAt() 메소드 호출 후 문자열 : " + str);
  • insert() : 해당 문자열의 지정된 인덱스 위치에 추가한다.
StringBuffer str = new StringBuffer("Java Programming!!");
        System.out.println("문자열 : " + str); // Java Programming!!
        System.out.println(str.insert(4, "Script")); // JavaScript Programming!!
        System.out.println("insert() 메서드 호출 후 문자열 : " + str);
profile
성장하는 개발자가 되고자 합니다.

0개의 댓글