Seguro que en más de una ocasión os habéis encontrado con este problemilla de saber si un String es un número:

Seguro que la primera que os ha venido a la cabeza ha sido esta:

Y si resulta que vuestro proyecto hace plantearos el tema del rendimiento: seguro que ya sabéis que el lanzamiento de excepciones es un proceso costoso…buscando una opción más eficiente podríamos decompilar el Long.parseLong y no lanzar la excepción, entonces tendríamos:

Finalmente también podría ocurrírsenos usar una expresión regular:

En este post estudian el rendimiento de cada uno de estos métodos, resumiendo tendríamos que el segundo método es en media 10 veces más rápido que el primero y el tercero