java如何处理八进制数和十进制数

java如何处理八进制数和十进制数,java,Java,我无法理解java如何存储指定为八进制和十六进制的值 public class Test { public static void main ( String args[] ) { int a = 10 , b = 017 , c = 0X3A ; System.out.println( a + " " + b + " " + c) ; } } 此代码生成的输出是 10 15 58 对输出的详细解释会有很大帮助。请提前感谢基本上

我无法理解java如何存储指定为八进制和十六进制的值

public class Test {
    public static void main ( String args[] )
    {

        int a = 10 , b = 017 , c = 0X3A ; 
        System.out.println( a + " " + b + " " + c) ; 
    } 
}
此代码生成的输出是

10 15 58

对输出的详细解释会有很大帮助。请提前感谢

基本上,如果指定的整数值以0开头,则视为八进制值,如果指定的整数值以0x开头,则视为十六进制值。由于易于理解,编程使用十进制。在java中,
“println”使用适当的“toString”方法转换值后输出单个值。默认情况下,toString()不显式传递任何基数值,并将值作为十进制类型的基数进行处理

对于您的代码片段,下面的插图将显示如何获得结果

  • a=10是一个十进制值。因此,它是这样印刷的
  • b=017是以“0”开头的八进制值。八进制到十进制的转换在打印结果之前进行

    转换:

    (8^0)*7+(8^1)*1=7+8=15

  • c=0X3A是以“0X”开头的十六进制值。进行十六进制到十进制的转换

    转换:

    (16^0)*A+(16^1)*3=10+48=58[因为十六进制中的[A-F]表示值[10-15]

  • 因此我们有a=10b=15和c=58

    注意:如果需要打印六进制或八进制值,可以更改格式说明符


    输出:3a 17

    数字的内部实现是完全相同的。bin/hex/octa可以是外部表示。换句话说:一个数字不知道,是从bin/oct/hex/dec常量
    017
    octal是15 dec.
    3a
    hex是58 dec.具体是什么让你困惑?不清楚你在说什么提问。请开发。有什么需要解释的?15十进制是15十进制,017八进制是15十进制,3A十六进制是58十进制。编译器在编译期间进行所有这些转换。Java不存储任何八进制或十六进制。转换发生在编译时。非常感谢。这是我期望的解释
    **System.out.printf("%o %x",b,c);**