如何在java中设置八进制的值?

Kap*_*pil 9 java octal

我正在尝试编写以下代码.但它给了我错误,请帮助我.

    int six=06;
    int seven=07;
    int abc=018;
    int nine=011;
    System.out.println("Octal 011 ="+nine);
    System.out.println("octal O18 =" + abc);
Run Code Online (Sandbox Code Playgroud)

为什么我不能给018和019变量.我可以给变量赋值020和021.为什么会这样?这背后的原因是什么,请告诉我.
我得到了以下错误

            integer number too large: 018
            int eight=018;
Run Code Online (Sandbox Code Playgroud)

mul*_*lya 30

Octal是base-8数字系统,所以它意味着数字可以是0到7,你不能在八进制数系统中使用数字8(和9).


Jon*_*eet 21

为什么我不能给018和019变量.

因为前缀的整数文字0被视为八进制,而'8'和'9'不是有效的八进制数字.

JLS第3.10.1节开始:

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

试图在八进制数中使用'8'就像尝试在十六进制中使用'G'一样......它很简单,不是该基数中使用的符号集的一部分.


Kan*_*mar 17

// Decimal declaration and possible chars are [0-9]
int decimal    =  495;        

// HexaDecimal declaration starts with 0X or 0x and possible chars are [0-9A-Fa-f]
int hexa       =  0X1EF; 

// Octal declaration starts with 0 and possible chars are [0-7] 
int octal      =  0757;  

// Binary representation starts with 0B or 0b and possible chars are [0-1]  
int binary     =  0b111101111; 
Run Code Online (Sandbox Code Playgroud)

如果数字是字符串格式,那么您可以使用下面的方法将其转换为int

String text = "0b111101111";
int value = text.toLowerCase().startsWith("0b") ? Integer.parseInt(text.substring(2), 2)
                                  : Integer.decode(text);
Run Code Online (Sandbox Code Playgroud)


ass*_*ias 7

八进制数(基数为8)只能使用以下数字:01234567.十进制数(基数10)只能使用相同的方式0123456789.

所以在八进制表示中,17 + 120.


NPE*_*NPE 6

为什么我不能给018和019变量.我可以给变量赋值020和021.

前导零表示八进制文字.但是,8并且9不是有效的八进制数字.这使得018019无效的.


Owe*_*Cao 6

前缀0表示八进制(8基)(数字0-7).

public class MainClass{

  public static void main(String[] argv){

    int intValue = 034;  // 28 in decimal
    int six = 06; // Equal to decimal 6
    int seven = 07; // Equal to decimal 7
    int eight = 010; // Equal to decimal 8
    int nine = 011; // Equal to decimal 9

    System.out.println("Octal 010 = " + eight);

  }

}
Run Code Online (Sandbox Code Playgroud)


Ted*_*opp 5

当 Java 中的整数文字以 0 开头时,它被假定为八进制表示法。八进制中的数字89是非法的 - 数字的范围只能在 0 到 7 之间。