: Java에서 문자열(String)과 배열(List)에서 특정 값(문자열, 문자, 요소)의 "첫 번째 위치(인덱스)"를 찾아 반환하는 메서드
1. 문자열에서 indextOf()
int index = my_string.indexOf(str);
indexOf(String str, int fromIndex);
//str 찾을 문자열, fromIndex 탐색 시작 위치;
indexOf(str)
찾을 문자열이 있는 경우 => 첫 번째 위치(인덱스)를 반환
찾을 문자열이 없는 경우 => -1을 반환
중복 문자가 있을 경우, 가장 처음 등장하는 위치를 반환한다.
indexOf(String str, int fromIndex)
: fromIndex 이후부터 탐색을 시작해 문자열 안에서 특정 문자열 str의 위치를 찾는 메서드.
탐색 시작 위치부터 오른쪽으로 탐색.
예시)
[프로그래머스/java/Lv.0] 접두사인지 확인하기
* 문제 풀이class Solution { public int solution(String my_string, String is_prefix) { int answer = 0; int a = my_string.indexOf(is_prefix); if(a == 0){ answer = 1; } return answer; }}문자열 위치를 찾는 indexOf()를 사용해 my_string에서 is_
amy-g.tistory.com
public class Main {
public static void main(String[] args) {
String str = "banana";
char target = 'a';
int count = 0;
int index = str.indexOf(target);
while (index != -1) {
count++;
index = str.indexOf(target, index + 1); // 다음 위치부터 검색
}
System.out.println(target + "의 등장 횟수: " + count); // 출력: a의 등장 횟수: 3
}
}
while문을 사용해 특정 문자 등장 횟수 세기도 가능하다.
public class Main {
public static void main(String[] args) {
String str = "Java is fun, and Java is powerful.";
// 첫 번째 "Java" 찾기 (0부터 탐색)
int firstIndex = str.indexOf("Java");
System.out.println("첫 번째 Java 위치: " + firstIndex); // 출력: 0
// 두 번째 "Java" 찾기 (첫 번째 "Java" 이후인 인덱스 5부터 탐색)
int secondIndex = str.indexOf("Java", firstIndex + 1);
System.out.println("두 번째 Java 위치: " + secondIndex); // 출력: 18
}
}
2. 배열에서 IndexOf()
자바 배열은 단순한 데이터 묶음이고 indexOf() 는 List 인터페이스에 있는 메서드.
그러므로 자바의 기본 배열인 int[], String[]은 List가 아니기 때문에 배열 차제에서 indexOf()를 바로 사용할 수 없다.
1) 배열을 List로 바꾸기
int[]가 아닌 Integer[]와 같은 참조형 배열만 가능
Arrays.asList()를 쓰면 배열을 List처럼 다룰 수 있다.
Integer[] arr = {10, 20, 30};
int idx = Arrays.asList(arr).indexOf(20); // ✅ 정상 작동
System.out.println(idx); // 출력: 1
※ int[]와 Integer[] 차이?
> int는 기본 숫자 자료형
배열로 만들면 int[] => 숫자만 저장된 단순 배열
단순한 정수 덩어리여서 자바의 List, Collections, indexOf() 같은 메서드를 사용하기 힘들다.
> Integer는 참조형(=객체)
Integer는 int를 감싸는 객체형 클래스.
자바는 객체 지향 언어이기 때문에 대부분의 기능이 int가 아닌 Integer와 같은 객체를 기준으로 동작한다.
배열 Integer[] => 정수 객체들의 배열이 됨.
===>> 그러므로 정수만 저장하고 단순 연산 할 땐 Int[]를, List, indexOf 등과 같은 기능을 사용하고자 할 땐 Integer[]를 사용한다.
2) for문으로 찾기
반복문을 돌면서 원하는 인덱스 직접 찾기.
이 방법은 모든 배열에서 다 적용이 가능하다.
* 참고 백준 2562번
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int[] arr = new int[9];
int max = arr[0];
int index = 0;
for(int i = 0; i < arr.length; i++){
arr[i] = sc.nextInt();
}
for(int i = 0; i < arr.length; i++){
if(arr[i] > max){
max = arr[i];
index = i;
}
}
System.out.println(max);
System.out.println(index + 1);
}
}
'공부 > JAVA' 카테고리의 다른 글
| [JAVA] BufferedReader와 BufferedWriter (0) | 2025.04.30 |
|---|---|
| [JAVA] 문자열 비교 equals() (0) | 2025.04.08 |
| [JAVA] ArrayList (0) | 2025.02.08 |
| [JAVA] 데이터 변환 valueOf() / 문자열을 문자 배열로 반환 toCharArray() (0) | 2025.01.25 |
| [JAVA] Math.abs() 함수 (0) | 2025.01.13 |