EEALL@ONCE
☕StringIndexOutOfBoundsException 본문
728x90
이 에러는 문자열의 인덱스 범위를 벗어나는 접근 시도로 인해 발생합니다. 주로 문자열의 길이를 초과하거나 음수 인덱스에 접근할 때 발생합니다.
가장 일반적인 상황은 다음과 같습니다:
String text = "Hello, World!";
char character = text.charAt(15); // 여기서 인덱스 15는 범위를 벗어나므로 StringIndexOutOfBoundsException이 발생합니다.
이 문제를 해결하기 위해서는 다음과 같은 점을 고려해야 합니다:
1. **인덱스 검사:** 문자열의 길이를 넘어가는지 검사하는 것이 중요합니다.
if (index >= 0 && index < text.length()) {
char character = text.charAt(index);
} else {
// 예외 처리 또는 오류 메시지 출력
}
2. **문자열 길이 확인:** `charAt` 메서드로 접근하기 전에 반드시 문자열의 길이를 확인하세요.
int textLength = text.length();
if (index >= 0 && index < textLength) {
char character = text.charAt(index);
} else {
// 예외 처리 또는 오류 메시지 출력
}
3. **문자열 인덱스는 0부터 시작합니다:** 첫 번째 문자는 인덱스 0, 두 번째 문자는 인덱스 1이며 이런 식으로 이어집니다.
효율적인 방식은 주로 인덱스 범위를 검사하여 올바른 접근을 보장하는 것입니다. 이는 불필요한 예외 상황을 방지하고 코드의 안정성을 높이는 데 도움이 됩니다.
만약 문자열을 자주 접근해야 한다면, 각 인덱스에 대한 접근이 반복될 때마다 길이를 다시 계산하는 것보다는 길이를 변수에 저장하여 재사용하는 것이 효율적입니다.
위의 코드에서의 부작용은 문자열 인덱스가 올바르지 않을 경우 `StringIndexOutOfBoundsException`이 발생한다는 점입니다. 이는 프로그램이 비정상적으로 종료되는 것을 의미하며, 이를 처리하기 위한 예외 처리나 오류 메시지 출력이 필요합니다.
728x90
'언어💻 > 자바☕' 카테고리의 다른 글
☕toLowerCase/toUpperCase (0) | 2023.08.21 |
---|---|
☕DateTimeFormatter (0) | 2023.08.21 |
☕InputStream (0) | 2023.08.17 |
☕ Scanner / System.in (0) | 2023.08.17 |
☕ 원시형 매개변수 vs 참조형 매개변수 (0) | 2023.08.17 |