Java charAt() 함수 알아보기

String 클래스는 charAt() 함수를 제공하는데, 문자열에서 특정 Index의 문자를 리턴합니다. 예제와 함께 자세히 알아보겠습니다.

1. String.charAt()

String.charAt(index)는 문자열에서 index에 해당하는 문자를 char 타입으로 리턴합니다.

아래와 같이 특정 위치의 문자가 무엇인지 가져와서 출력해볼 수 있습니다.

public class Example {
    public static void main(String[] args) {

        String str = "Hello, World";

        char c = str.charAt(0);
        System.out.println(c);

        c = str.charAt(2);
        System.out.println(c);

        c = str.charAt(4);
        System.out.println(c);
    }
}

Output:

H
l
o

2. 아스키(ASCII) 코드로 출력

char 타입의 문자를 int로 형변환하면, 그 값이 바로 아스키 코드가 됩니다.

public class Example {
    public static void main(String[] args) {

        String str = "Hello, World";

        char c = str.charAt(0);
        System.out.println((int) c);

        c = str.charAt(2);
        System.out.println((int) c);

        c = str.charAt(4);
        System.out.println((int) c);
    }
}

Output:

72
108
111

아스키 코드는 ibm.com - 33에서부터 126까지의 ASCII 문자에서 제공하는 테이블을 참조하시면 됩니다.

3. 첫번째 문자, 마지막 문자

charAt()을 이용하여 문자열의 첫번째, 마지막 문자를 가져올 수 있습니다.

아래와 같이 첫번째 문자는 Index가 0이고 마지막 문자는 length() - 1인 것을 이용하면 됩니다.

public class Example {
    public static void main(String[] args) {

        String str = "Hello, World";

        System.out.println("first: " + str.charAt(0));
        System.out.println("last: " + str.charAt(str.length() - 1));
    }
}

Output:

first: H
last: d

4. StringIndexOutOfBoundsException 에러

charAt()에 문자열의 길이보다 더 큰 Index를 인자로 전달하면 아래와 같이 StringIndexOutOfBoundsException 에러가 발생합니다.

public class Example {
    public static void main(String[] args) {

        String str = "Hello, World";

        char c = str.charAt(30);
        System.out.println((int) c);
    }
}

Output:

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 30
	at java.base/java.lang.StringLatin1.charAt(StringLatin1.java:48)
	at java.base/java.lang.String.charAt(String.java:1512)
	at Example.main(Example.java:6)

try catch로 예외를 처리할 수 있지만, 기본적으로 아래와 같이 문자열 길이와 비교하여 유효한 Index 인지 확인 후 사용하시는 것이 좋습니다.

public class Example {
    public static void main(String[] args) {

        String str = "Hello, World";

        int index = 30;
        if (index < str.length()) {
            char c = str.charAt(index);
            System.out.println((int) c);
        } else {
            System.out.println("Invalid index: " + index);
        }
    }
}

Output:

Invalid index: 30
Loading script...
codechachaCopyright ©2019 codechacha