It seems you want to keep the split characters as well, so using String.split() 'normally' will not do. For that, I would go with lookarounds already proposed, but with a simpler pattern:
import java.util.Arrays;
public class Splitter {
public static void main(String args[]) {
String str = "(30)";
String[] results = str.split("(?<=[()])|(?=[()])");
System.out.println(Arrays.toString(results)); // [(, 30, )]
}
}
This pattern will use characters '(' and ')' as tokens to use for splitting, but keeps the tokens as well.
If you're interested, there's more discussion on using lookarounds in this thread.