2017-10-14 18 views
-1

なぜコンパイラはstringへの変換中にint値を変更し、どのように新しい値を取得するのですか?文字列変換へのJava整数の変換が失敗しました

int n = 1003456; 
String str = Integer.toString(n); 
System.out.println(str.length() + " " + n + " " + str); 
int m = 0013456; 
String string = Integer.toString(m); 
System.out.println(string.length() + " " + m + " " + string); 

上記プログラムの出力である:

7 1003456 1003456 
4 5934 5934 

出力の最初の行は明らかであるが、出力の2行目は、整数のサイズが4であることを示している(私はそれがあるべきだと思いますmが13456の場合は5)。mの新しい値が変更されます。どのようにmの私の価値を得るためにコードを操作する必要があります。

答えて

3

0で始まる整数リテラルは、10進数ではなく8進数としてコンパイラによって解釈されます。だから、

int m = 0013456; 

int m = 5934; 
に相当します
関連する問題