Et à part ça si ça se trouve Java est tellement mauvais qu'il serait foutu d'être plus rapide de faire un try/catch à la squalyl qu'un check propre que le nombre est un entier.

En C++ tu fais ça et c'est réglé ET rapide ET propre:
bool isInteger(const char *s) {
if (*s == '+' || *s == '-')
s++;
while (*s >= '0' && *s <= '9')
s++;
return *s != '\0';
}