문자열(String) 타입의 변수 선언과 할당
기본적으로 String 타입은 큰따옴표로 감싸진 문자열을 의미한다. String 타입의 변수를 선언하고, 문자열 리터럴을 할당하는 방법은 다음과 같다.
// 문자열 리터럴을 String 타입의 변수 name에 할당하는 방법
String name1 = "Kim Coding";
// String 클래스의 인스턴스를 생성하는 방법
String name2 = new String("Kim Coding");
String 타입의 변수는 string 변수명; 으로 선언할 수 있다. 선언한 변수에 문자열을 할당하는 방법은 두 가지로 문자열 리터럴을 할당하는 방법과 String 클래스의 인스턴스를 생성하여 할당하는 방법이 있다.
String Class의 length()메서드
length() 메서드는 문자열의 길이, 즉 철자의 개수를 리턴하는 메서드이다.
String str = "codestates";
System.out.println(str.length()); // 10
String Class의 charAt()메서드
charAt()메서드는 해당 문자열의 특정 인덱스에 해당하는 문자를 반환한다.
String str = new String("Java");
System.out.println("문자열 : " + str); // "문자열 : Java"
System.out.println(str.charAt(0)); // 'J'
System.out.println(str.charAt(1)); // 'a'
System.out.println(str.charAt(2)); // 'v'
System.out.println(str.charAt(3)); // 'a'
System.out.println(str.length()); // 4
System.out.println("\\ncharAt() 메서드 호출 후 문자열 : " + str);
String Class의 concat()메서드
concat은 concatenate의 약자로 연결한다는 의미를 가진다. 해당 문자열의 뒤에 인수로 전달된 문자열을 추가한 새로운 문자열을 반환한다.
String str = new String("Java");
System.out.println("문자열 : " + str);
System.out.println(str.concat("수업"));
System.out.println("concat() 메서드 호출 후 문자열 : " + str);
String Class의 indexOf()메서드
indexOf() 메서드는 해당 문자열에서 특정 문자나 문자열이 처음으로 등장하는 위치의 인덱스를 반환한다. 만약 문자열이 포함되어있지 않으면 -1을 반환한다.
String str = new String("Oracle Java");
System.out.println("문자열 : " + str);
System.out.println(str.indexOf('o'));
System.out.println(str.indexOf('a'));
System.out.println(str.indexOf("Java"));
System.out.println("indexOf() 메서드 호출 후 원본 문자열 : " + str);
String Class의 trim()메서드
trim()메서드는 해당 문자열의 맨 앞과 맨 뒤에 포함된 모든 공백 문자를 제거해준다.
String str = new String(" Java ");
System.out.println("문자열 : " + str);
System.out.println(str + '|');
System.out.println(str.trim() + '|');
System.out.println("trim() 메서드 호출 후 문자열 : " + str);
String Class의 toLowerCase()와 toUpperCase()메서드
toLowerCase() 메서드는 해당 문자열을 모두 소문자로 변환시켜주며 toUpperCase() 메서드는 모든 문자를 대문자로 변환시켜준다.
String str = new String("Java");
System.out.println("문자열 : " + str);
System.out.println(str.toLowerCase());
System.out.println(str.toUpperCase());
System.out.println("두 메서드 호출 후 문자열 : " + str);
Java toString() Method
아래의 사이트에서 문자열 메서드에 대한 레퍼런스를 볼 수 있다. 아직은 어색하지만 꾸준히 탐독해보자
StringnTokenizer
stringTokenizer 클래스는 문자열을 지정한 구분자로 쪼개주는 클래스이다. 쪼개진 문자열을 토큰(token)이라고 부르며 StringTokenizer를 사용하기 위해서는 java.util.StringTokenizer를 import 해야한다.
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 코드는 반복문의 한 종류인데 어떻게 작동하는지 추후 반복문 챕터에서 공부할 예정이니 걱정하지 않으셔도 됩니다.
while(tokenizer.hasMoreTokens()){
System.out.println(tokenizer.nextToken());
}
System.out.println("total tokens:"+tokenizer.countTokens());
}
}
자주 사용하는 메서드는 아래와 같다.
- init countTokens()
남아있는 토큰의 개수를 반환한다. 전체 토큰의 개수가 아닌 현재 남아있는 토큰 개수이다. - boolean hasMoreElements(), boolean hasMoreTokens()
두 메서드는 성능차이는 없고 동일한 값을 반환한다. 현재 위치 뒤에 있는 문자열에서 하나 이상의 토큰을 사용할 수 있는 경우 true, 그렇지 않으면 false를 반환한다. - Object nextElement(), String nextToken()
두 메서드는 다음의 토큰을 반환한다. nextElement는 Object를, nextToken은 String을 반환한다.
StringBuilder
한번 생성된 String 클래스의 인스턴스는 여러개의 문자열을 더할 때 매번 새로운 인스턴스를 생성해야한다. 문자열이 많을 수록 인스턴스 생성 과정이 많아져 비효율적이다. 그래서 이 문제를 해결하기 위해 StringBuilder를 사용한다.
StringBuilder의 객새를 생성한 후 append() 인자로 연결하고자 하는 문자열을 넣어 StringBuilder의 객체를 통해 호출한다.
또한 문자열을 출력할 때, 변수에 문자열을 할당할 때는 toString() 메서드를 사용한다.
public class Main {
public static void main(String[] args) {
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("문자열 ").append("연결");
String str = stringBuilder.toString();
System.out.println(stringBuilder);
System.out.println(str);
}
}
StringBuffer
String 클래스의 인스턴스는 한 번 생성되면 값을 읽기만 하고 변경할 수는 없는데 String Buffer 클래스의 인스턴스는 그 값을 변경할 수도 있고, 추가할 수도 있다. 아래 StringBuffer 클래스의 API 문서를 참고하여 공부해보자
append()
append() 메서드는 인수로 전달된 값을 문자열로 변환한 후 해당 문자열의 마지막에 추가한다. string 클래스의 concat()메서드와 같은 결과를 반환하지만, 내부 처리 속도가 훨씬 빠르다.
StringBuffer str = new StringBuffer("Java");
System.out.println("문자열 : " + str);
System.out.println(str.append(" programming"));
System.out.println("append() 메서드 호출 후 문자열 : " + str);
capicity()
capacity() 메서드는 StringBuffer 인스턴스의 현재 버퍼 크기를 반환한다.
StringBuffer str01 = new StringBuffer();
StringBuffer str02 = new StringBuffer("Java");
System.out.println(str01.capacity());
System.out.println(str02.capacity());
delete()
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()
Insert() 메서드는 인수로 전달된 값을 문자열로 변환한 후 해당 문자열의 지정된 인덱스 위치에 추가한다. 이때 전달된 인덱스가 해당 문자열의 길이와 같으면 append()메서드와 같은 결과를 반환한다.
StringBuffer str = new StringBuffer("Java Programming!!");
System.out.println("문자열 : " + str);
System.out.println(str.insert(4, "Script"));
System.out.println("insert() 메서드 호출 후 문자열 : " + str);
'공부 > 전자컴퓨터공학' 카테고리의 다른 글
Java 제어문(Control Flow Statements) 조건문과 반복문 (2) | 2024.05.22 |
---|---|
Java 연산자(Operator) 및 콘솔 입출력 Java 기초 배우기 (0) | 2024.05.09 |
Java 변수(variable)와 타입(Type) 자바 기초 배우기 (0) | 2024.05.07 |
Java의 특징, IntelliJ 프로젝트 생성하기 (0) | 2024.05.06 |
JDK IntelliJ JetBrains Toolbox 설치하기 Java 기초 (0) | 2024.05.03 |