At least with Java 6, the compiler actually compiles ... to the same bytecode
Hooray! It's about time somebody woke up and did the compiler-writer's job. A language that exposes things about hardware and compiler implementation is offensive to me. The ++ operator originally corresponded to a particular instruction on a particular machine. I want my legions of business coders to think about insurance and customer service, not machine instructions.
Another silly example was a mainframe system that used signed dates because unsigned fields generated one more single-cycle machine instruction to force them to positive. Back then the mainframe ran 33mhz and we were charged $0.10 a CPU second, so every 33 million date assignments saved a dime. And explaining to every person who touched the data why they really didn't have to worry about negative dates cost how much?