Tenho uma curiosidade sobre isso. Sabemos que um numero pode ser int, double, long, etc. Mas queria saber como a linguagem identifica o - como parte do numero, e nao uma string.
Como assim?
Segue o mesmo comportamento que na matemática ficando com o símbulo de negativo na frente do número, qualquer valor abaixo de zero segue este formato, isso independente de tipagem e de linguagem de programação.
É a gramática da linguagem que determina isso.
Se você estuda ciência da computação, ainda vai aprender sobre isso na disciplina de compiladores, entretanto, antes de compiladores você precisa aprender lógica de predicados e linguagens formais.
O link abaixo abre a gramática do Java 8 na sessão pertinente à literais:
https://docs.oracle.com/javase/specs/jls/se8/html/jls-3.html#jls-3.10