[Java] 특정 문자 인덱스, 배열 인덱스를 찾는 indexOf()

2025. 2. 23. 11:26·공부/JAVA

: 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의 위치를 찾는 메서드.

탐색 시작 위치부터 오른쪽으로 탐색.

 

 

예시)

https://amy-g.tistory.com/167

 

[프로그래머스/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번

https://amy-g.tistory.com/217

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
'공부/JAVA' 카테고리의 다른 글
  • [JAVA] BufferedReader와 BufferedWriter
  • [JAVA] 문자열 비교 equals()
  • [JAVA] ArrayList
  • [JAVA] 데이터 변환 valueOf() / 문자열을 문자 배열로 반환 toCharArray()
amying
amying
공부해보겠슨
  • amying
    꽁꽁 얼어붙은 자바 위를 자박자박
    amying
  • 글쓰기 관리
  • 전체
    오늘
    어제
    • 분류 전체보기 (332)
      • 공부 (55)
        • JAVA (17)
        • Spring (17)
        • Java Script (1)
        • React (0)
        • SQL (3)
        • DB (1)
        • CS (13)
        • 기술면접 (3)
      • Git (2)
      • 강의 (36)
        • 부스트코스: Connect On: 테크와 나를 잇.. (16)
        • 부스트코스: CS50 (20)
      • 네이버 부스트캠프 베이직 (25. 06) (0)
      • 에러 (10)
      • 코테 (205)
        • 백준 (29)
        • 프로그래머스 JAVA Lv.0 (116)
        • 프로그래머스 JAVA Lv.1 (7)
        • 프로그래머스 SQL (53)
      • 개인 프로젝트 (16)
        • 책첵 CHAEKCHECK (2)
        • 일정 관리 서비스 만들기 (0)
        • 게시판 만들기 (eclipse-JSP) (14)
      • 이것저것 (4)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    프로그래머스
    에러
    코딩테스트_입문
    업무자동화
    부스트코스
    git명령어
    springbot
    데이터연동
    lombok
    Java
    오라클에러
    부스트코스강의
    알고리즘
    코테
    ORACLE에러
    책첵개발일지
    CS50
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.4
amying
[Java] 특정 문자 인덱스, 배열 인덱스를 찾는 indexOf()
상단으로

티스토리툴바