공부/전자컴퓨터공학

Java 문자열(string) Java 기초 배우기

AhJustC 2024. 5. 7. 17:21
반응형

문자열(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 

아래의 사이트에서 문자열 메서드에 대한 레퍼런스를 볼 수 있다. 아직은 어색하지만 꾸준히 탐독해보자

반응형
 

Understanding toString() method - javatpoint

If you want to represent any object as a string, toString() method comes into existence. The toString() method returns the string representation of the object. If you print any object, java compiler internally invokes the toString() method on the object. S

www.javatpoint.com

 

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 문서를 참고하여 공부해보자

 

 

StringBuffer (Java Platform SE 7 )

Inserts the string into this character sequence. The characters of the String argument are inserted, in order, into this sequence at the indicated offset, moving up any characters originally above that position and increasing the length of this sequence by

docs.oracle.com

 

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);
반응형