La sintassi Java è stata progettata per essere simile a quella di C, vedere ad esempio pagina 20 su  Come la JVM Spec si è candidata  al keynote del  JVM Languages Summit 2008  di James Gosling ( 20_Gosling_keynote.pdf ): 
  
- C syntax to make developers comfortable
 
  
 A sua volta, questo è il modo in cui  le costanti ottali sono definite in linguaggio C : 
  If an integer constant begins with 0x or 0X, it is hexadecimal. If it begins with the digit 0, it is octal. Otherwise, it is assumed to be decimal...
 Dato sopra, è naturale che i progettisti del linguaggio Java abbiano deciso di usare la stessa sintassi come in C. 
 Come indicato in  questo commento , StackOverflow ha una risposta ragionevole  Qui : 
  All modern languages import this convention from C, which imported it from B, which imported it from BCPL. 
  
  Except BCPL used #1234 for octal and #x1234 for hexadecimal. B has departed from this convention because # was an unary operator in B (integer to floating point conversion), so #1234 could not be used, and # as a base indicator was replaced with 0.
  
  The designers of B tried to make the syntax very compact. I guess this is the reason they did not use a two-character prefix.