今天看了这样一个题目:
public class Demo1 {
public static void main(String[] args) {
Demo1 d = new Demo1();
d.a();
}
public void a() {
int i=012;
System.out.println(i);
}
}
问输出什么结果: 我想当然的认为是12,觉得0就是来扰乱人的,但就拿到eclipse中执行了一下;结果结果出乎了我的意料!
结果是: 10
我就蒙圈了,就去百度,然后知道了:
java中数据以0开头的是八进制的,按照换算规则
1*81+2*80=10 结果自然就是10了,这件事告诉我,不确定的事还是要去实践来证明。
补充: 0x 开头的数据表示的是16进制(注意:0x中的0是数字0,而不是字母O) ,x也可以大写,用0X表示十六进制。
知识点:可以使用八进制、十六进制的类型:long, int, short, byte