String[] split(String regex) : regex 구분자를 기준으로 문자열을 분할 (limit = 0 과 같이 작동), 분리된 문자열은 배열로 반환
String[] split(String regex, int limit) : regex 구분자를 기준으로 문자열을 분할(= 패턴), 분리된 문자열은 배열로 반환
limit < 0 : 패턴이 가능한 한 많이 적용, 마지막 패턴 뒤 빈 문자열이 있다면 결과 배열에 포함
limit = 0 : 패턴이 가능한 한 많이 적용, 마지막 패턴 뒤 빈 문자열이 있어도 결과 배열에 포함되지 않음
limit > 0 : 패턴이 최대 limit - 1번 적용되고, 결과 배열의 최대 길이는 limit

문자열을 기준 문자로 분리하려고 할 때 split() 메소드를 자주 사용하게 된다.
java 공식문서에 따르면 split 메소드는 regex만 인자로 가지는 메소드와 regex, limit 두 가지를 인자로 가지는 메소드로 나뉘어져 있다.
좀 더 자세히 알아보자

java 공식문서의 split 메소드에 대한 설명이다.
두번째 줄에 "이 메소드는 주어진 표현식(regex)과 limit 인수로 0을 사용하는 두 인자를 받는 split 메소드를 호출 한 것처럼 동작합니다." 라는 문장이 있다.
limit 인자를 신경쓰지 않고 사용해왔는데 내부적으로 limit의 인수로 0이 들어간 것처럼 작동되고 있던 것이다.

두 가지 인자를 가진 split 메소드는 regex (주어진 정규 표현식)와 일치하는 부분을 기준으로 문자열을 분리해 배열로 반환하며, limit 는 regex와 일치하는 부분을 기준으로 문자열을 분리하는 패턴이 적용되는 횟수를 제어하는 매개변수로 배열의 길이를 조절하는데 사용 된다.
String str = "one,two,three,four";
String[] result = str.split(",", 3);
// result = {"one", "two", "three,four"}
limit가 양수, 0 이상일 때는 최대 limit - 1 번 만큼 regex 구분자를 사용하여 문자열을 분리한다.
결과 배열의 길이는 최대 limit 이고, 배열의 마지막 요소는 마지막 구분자 이후의 모든 문자열 이 된다.
String str = "one,two,,three,";
String[] result = str.split(",", 0);
// result = {"one", "two", "", "three"}
limit가 0일 때는 그동안 사용해왔던 split() 메소드 와 같이 동작한다.
패턴이 가능한 한 많이 적용되며 배열의 최대 길이도 제한이 없지만 분리하려는 문자열의 끝에 빈 문자열이 있을 경우 제거 된다.
String str = "one,two,,three,";
String[] result = str.split(",", -1);
// result = {"one", "two", "", "three", ""}
limit가 음수일 때도 0일 때와 마찬가지로 패턴이 가능한 한 많이 적용되며 배열의 최대 길이 제한도 없지만
0일때와 다른 점은 빈 문자열도 결과 배열에 포함 된다는 것이다
마지막 빈 문자열도 결과 배열 안에 포함하고 싶을 때 사용할 수 있다