[java] split() 뒤에 붙는 숫자의 비밀: limit 파라미터의 3가지 마법

CHOI HONGSEO·2026년 4월 10일

자바에서 문자열을 자를 때 가장 많이 쓰는 메서드는 단연 split()입니다. 보통은 split(",") 처럼 구분자만 넣어서 사용하죠.

그런데 다른 사람의 코드를 보다 보면 split(",", 3) 이나 split(",", -1) 처럼 뒤에 정체모를 숫자가 붙어있는 것을 종종 보게 됩니다.

이 두 번째 파라미터의 정체는 바로 limit(제한)입니다. 이 숫자가 양수일 때, 0일 때, 음수일 때 완전히 다른 3가지 마법을 부리는데요. 오늘 이 3가지 차이점을 완벽하게 정리해 드리겠습니다.

테스트를 위해 끝에 쉼표가 2개 더 붙어있는 아래 문자열을 예시로 들어보겠습니다.
String text = "사과,배,포도,귤,수박,,";


1. 양수 (예: 3) ➔ "최대 N조각까지만 내라!"

양수는 "결과 배열의 방을 최대 몇 개까지만 만들 것인가?"를 뜻합니다.

String text = "사과,배,포도,귤,수박,,";
String[] arr = text.split(",", 3);

System.out.println(Arrays.toString(arr));
// 결과: ["사과", "배", "포도,귤,수박,,"]

💡 자바의 속마음:*"아, 최대 3조각까지만 내라고? 알겠어. 첫 번째 쉼표 자르고, 두 번째 쉼표 자르고... 앗! 벌써 방이 2개 찼네? 그럼 나머지는 더 이상 자르지 말고 마지막 3번째 방에 몽땅 때려 넣어!*"

  • 언제 쓸까? (실무 꿀팁): 로그(Log) 파일이나 긴 문장을 처리할 때 아주 유용합니다. 앞의 몇 개 정보(날짜, 이름 등)만 떼어내고, 뒤에 있는 긴 내용은 자르지 않고 원본 그대로 보존하고 싶을 때 사용합니다.

2. 숫자 0 (기본값) ➔ "다 자르되, 뒤에 남는 쓰레기(빈 칸)는 버려라!"

사실 우리가 평소에 쓰는 split(",")은 자바 내부적으로 split(",", 0)과 완벽하게 똑같이 동작합니다. limit을 아예 적지 않으면 자바가 알아서 0을 넣어서 계산하기 때문입니다.

String text = "사과,배,포도,귤,수박,,";
String[] arr = text.split(",", 0); // text.split(",")과 완벽히 동일

System.out.println(Arrays.toString(arr));
// 결과: ["사과", "배", "포도", "귤", "수박"] 

자바의 속마음:*"구분자가 보일 때마다 전부 다 자를게! 어? 그런데 맨 끝에 쉼표가 남아서 빈 문자열("")이 생기네? 의미 없는 빈 칸은 쓰레기니까 내가 알아서 버려줄게!*"

  • 특징: 우리가 가장 익숙하게 아는 방식입니다. 최대한 다 자르지만, 맨 끝에 남는 후행 빈 문자열들은 배열에 포함시키지 않고 날려버립니다.

3. 음수 (예: -1) ➔ "제한 해제! 끝까지 다 자르고 빈 칸도 전부 살려라!"

음수(보통 -1을 씁니다)가 들어가면 자바는 "limit 무한대(제한 없음)" 모드로 돌입합니다.

String text = "사과,배,포도,귤,수박,,";
String[] arr = text.split(",", -1);

System.out.println(Arrays.toString(arr));
// 결과: ["사과", "배", "포도", "귤", "수박", "", ""] 

자바의 속마음:*"제한 해제! 중간이든 맨 끝이든 쉼표가 보이면 무조건 다 자른다. 그 결과로 생기는 빈 문자열("")조차도 하나의 소중한 데이터로 인정해서 배열에 모조리 담아줄게!*"

  • 언제 쓸까? (코딩테스트 필수): 빈 문자열도 꼬박꼬박 개수에 포함시켜야 하는 알고리즘 문제나, 엑셀/CSV 데이터처럼 빈칸 데이터가 누락되면 안 되는 상황에서 무조건 사용해야 하는 정석 코드입니다.
split 코드파라미터 의미결과 배열 형태
split(",", 3)양수 (제한)["사과", "배", "포도,귤,수박,,"]
split(",", 0)0 (기본값)["사과", "배", "포도", "귤", "수박"] (뒤에 빈칸 버림)
split(",", -1)음수 (무제한)["사과", "배", "포도", "귤", "수박", "", ""] (빈칸 모두 살림)
profile
곧 성공할 개발자입니다.

0개의 댓글