2016-04-05 8 views
2

に余分なゼロを置くことで、その違いを説明できるいただきました!違い は、uはどのようなだけでプログラミングを学び始めた左側

public class tst { 

    public static void main(String args[]){ 
     int mk=1200; 
     System.out.println(mk); 
    } 

} 

public class tst { 

    public static void main(String args[]){ 
     int mk=01200; 
     System.out.println(mk); 
    } 
} 

それらの間の第1は、第1 640ながら 1200を引き起こすました。

答えて

4

先頭に0があると、コンパイラは数値を8進数(基数8)として解析します。 01200の8進数の小数値は64​​0です。

+0

それはSystem.out.printlnだからです。私によれば、値を文字列に変換するのですか? –

+0

@mayankkumar printlnは、整数を10進表現のStringに変換します。 – Eran

2

先行ゼロは、の8進数のリテラルを意味します。したがって、01200は10進数の8進数である。

本質的に、これは8進リテラルがより一般的だったより古い時間に敬意を表している。最近は混乱の原因となる可能性が高いですが、 8進リテラルの表記をより慎重に指定する動きがあります。

関連する問題