Ragionamento dietro la sintassi della notazione ottale in Java?

7

Java ha la seguente sintassi per basi diverse:

int x1 = 0b0101; //binary
int x2 = 06;     //octal
int x3 = 0xff;   //hexadecimal

C'è qualche ragionamento sul perché sia 0 invece di qualcosa come 0o come quello che fanno per binario ed esadecimale? C'è qualche documentazione sul perché sono andati su questa strada?

    
posta Danny 18.12.2013 - 21:47
fonte

1 risposta

9

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.

    
risposta data 18.12.2013 - 22:35
fonte

Leggi altre domande sui tag