我正在尝试编写以下代码。但它给了我错误,请帮助我。
int six=06;
int seven=07;
int abc=018;
int nine=011;
System.out.println("Octal 011 ="+nine);
System.out.println("octal O18 =" + abc);
为什么我不能给018和019变量。我可以给变量赋值020和021。为什么会这样?这背后的原因是什么,请告诉我。 我得到了以下错误
integer number too large: 018
int eight=018;
Octal是base-8数字系统,所以它意味着数字可以是0到7,你不能在八进制数系统中使用数字8(和9)。
为什么我不能给018和019变量。
因为以0
为前缀的整数文字被视为八进制,而'8'和'9'不是有效的八进制数字。
八进制数字由ASCII数字0后跟一个或多个散布有下划线的ASCII数字0到7组成,并且可以表示正整数,零整数或负整数。
试图在八进制数中使用'8'就像尝试在十六进制中使用'G'一样......它很简单,不是该基数中使用的符号集的一部分。
// 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;
如果数字是字符串格式,那么您可以使用下面的方法将其转换为int
String text = "0b111101111";
int value = text.toLowerCase().startsWith("0b") ? Integer.parseInt(text.substring(2), 2)
: Integer.decode(text);
八进制数(基数为8)只能使用以下数字:01234567
。十进制数(基数10)只能使用0123456789
的方式相同。
所以在八进制表示中,17 + 1
是20
。
为什么我不能给018和019变量。我可以给变量赋值020和021。
前导零表示八进制文字。但是,8
和9
不是有效的八进制数字。这使得018
和019
无效。
前缀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);
}
}
当整数文字在Java中以0开头时,它被假定为八进制表示法。数字8
和9
在八进制中是非法的 - 数字的范围仅在0到7之间。
因为它是八进制,所以八进制数具有8
数字,从0
到7
包含。出于同样的原因,12
将是无效的二进制数。
你需要至少基础9
才能拥有18
和19
的正常小数基数。