具有前导零输出的长变量

bNd*_*bNd 3 java

当长变量带有前导零时,我无法理解为什么这样的输出.

public class Test{
        public static void main(String[] args) {
             long var1=00123l;
             long var2=123l;
             System.out.println("Variable 1--->"+var1);
             System.out.println("Variable 2--->"+var2);
             System.out.println(var1==var2);
        }
    }
Run Code Online (Sandbox Code Playgroud)

输出:

Variable 1--->83
Variable 2--->123
false
Run Code Online (Sandbox Code Playgroud)

cod*_*Man 7

当文字的前缀为0时; java将其视为八进制数.当您打印相同的数字时,默认情况下它以基本(10)格式打印.因此00123l印刷为83.

  • 好.谢谢.但是你知道一种以基本(10)格式停止转换的方法吗?如果没有任何办法,请纠正我.因为有些情况我有这样的价值观.所以我必须手动删除那些前导零.有时需要在预览中显示前导零.那我怎么处理这种情况呢? (2认同)

NPE*_*NPE 7

前导零变成00123l八进制文字和123 8 = 83 10.

来自JLS:

八进制数字由ASCII数字0后跟一个或多个散布有下划线的ASCII数字0到7组成,并且可以表示正整数,零整数或负整数.

当您打印该值时,它将打印在base-10中,因此您可以看到83.