compiled
Don't confuse ``compiled'' with static manifest typing. Java is about as compiled as JavaScript (many interpreters compile scripts into an internal intermediate code before interpreting it). You hardly ever run what the compiler generates. Instead the output is fed to the JIT which takes on the tedious job of turning the horrible JVM byte code into somthing that a register machine understands (JVM bytecode is pretty easy to implement, but is awful as an intermediate language).
All data ultimately resolves to a number. That is the nature of information.
Firstly, you missed the point that
>>17 was making. What if you don't obey (by mistake) the rules that are only described in the documentation? There's compile time safety for returning different numbers when comparing two objects twice.
Secondly, all data don't ultimately resolve to a number. What you fail to see is that you can find an isomorphism between any data and natural numbers
(and it goes both ways: I can represent numbers with my fingers when I count them, but you wouldn't say that my digits are digits).