public class Test {
public static void main(String... args) {
int i=010;
System.out.print(i);
}
}
輸出:爲什麼輸出8?
8
爲什麼?什麼是邏輯?
public class Test {
public static void main(String... args) {
int i=010;
System.out.print(i);
}
}
輸出:爲什麼輸出8?
8
爲什麼?什麼是邏輯?
0
是八進制數字的前綴,就像0x
是十六進制數字的前綴(並且0b
是自Java 7以來的二進制數字的前綴)。
所以010
意味着1 * 81 + 0 * 80
,這是8
。
因爲010
,這裏是八進制。
該整數是八進制 - 系統,因爲您在開始時爲0。
看一看的Java Language Specification, Chapter 3.10.1 Integer Literals
字面一個整數,可以以十進制(底爲10),十六進制 (基數爲16),八進制(基座8),或二進制(基數爲2)來表達。
一種八進制標記由一個ASCII數字0至7隨後的ASCII數字0的一個或多個 用下劃線穿插的,並且可以 表示正,零或負的整數。
這就是爲什麼010
= 8
。
使用0前綴表示您正在使用八進制數字。
在Java和其他幾種語言中,以0
開頭的整數文字被解釋爲八進制數(基數爲8)。
如果你寫的數字有一個以上的有效數字,你可能會被結果困惑。
// octal to decimal
01 == 1
02 == 2
07 == 7
010 == 8
020 == 16
024 == 20
// octal to binary (excluding most significant bit)
01 == 1
02 == 10
07 == 111
010 == 1000
020 == 10000
024 == 10100
http://en.wikipedia.org/wiki/Octal – arshajii