在它前面具有零的整数是什么意思,我该如何打印它?

Dha*_*era 4 java int zero println output

class test{
  public static void main(String args[]){
     int a = 011;
     System.out.println(a);
  }
}
Run Code Online (Sandbox Code Playgroud)

为什么我得到9输出而不是011

我怎样才能获得011输出?

bvd*_*vdb 6

JLS 3.10.1介绍了4种方法来定义整数.

整数文字可以用十进制(基数10),十六进制(基数16),八进制(基数8)或二进制(基数2)表示.

八进制数字由数字0后跟一个或多个数字0到7组成 ......

十进制数字是单个数字0,表示整数零,或者由1到9的数字组成,可选地后跟0到9之间的一个或多个数字......

总之,如果你的整数文字(即011)以0开头,那么java将假设它是一个八进制表示法.

八进制转换示例

解决方案:

如果你希望你的整数保持值11,那么不要花哨,只需分配11.毕竟,符号不会改变任何值.我的意思是,从数学的角度来看11 = 011 = 11,0.

int a = 11;
Run Code Online (Sandbox Code Playgroud)

格式化仅在您打印时(或将您转换int为a时String)很重要.

String with3digits = String.format("%03d", a);
System.out.println(with3digits);
Run Code Online (Sandbox Code Playgroud)

格式化程序"%03d"用于添加前导零.

格式化

或者,您可以使用该printf方法在1行中完成.

System.out.printf("%03d", a);
Run Code Online (Sandbox Code Playgroud)