为什么这种连接导致“208”而不是“20010”
why this concatenation is resulting in "208" instead of "20010"
class Jspiders
{
public static void main(String[] args)
{
System.out.println("number is "+20+010);
}
}
而且当我尝试打印“2001”时,结果为 201 ??
太棒了!语言是java,我刚刚试了一下。我不知道 java 可以读取小数以外的数字文字,但我从未真正尝试过。看起来是因为它认为 010 是一个以 8 为基数的数字,并且是八位字节形式
010 = 8
01 = 1
所以 20 + 010 会给你 208(不是 28,因为如果你输入 (20+010) 它会进行字符串连接,那么它会打印 28)
和 20 + 01 给你 201
我也玩了一下,注意到如果你做 20 + 0xA 它将给你 2010(0xA 是十六进制的 10)。
这就是您获得这些结果的原因。
010 是八进制数表示法(基数 8)
运算符+适用于最左边操作数的类型,它是一个字符串,因此+是字符串连接的运算符。
System.out.println("number is "+(20+010));
会给你一个不同的答案,涉及两个数字的整数相加,(20+010) 的最左边部分是一个数字。
class Jspiders
{
public static void main(String[] args)
{
System.out.println("number is "+20+010);
}
}
而且当我尝试打印“2001”时,结果为 201 ??
太棒了!语言是java,我刚刚试了一下。我不知道 java 可以读取小数以外的数字文字,但我从未真正尝试过。看起来是因为它认为 010 是一个以 8 为基数的数字,并且是八位字节形式
010 = 8
01 = 1
所以 20 + 010 会给你 208(不是 28,因为如果你输入 (20+010) 它会进行字符串连接,那么它会打印 28)
和 20 + 01 给你 201
我也玩了一下,注意到如果你做 20 + 0xA 它将给你 2010(0xA 是十六进制的 10)。
这就是您获得这些结果的原因。
010 是八进制数表示法(基数 8)
运算符+适用于最左边操作数的类型,它是一个字符串,因此+是字符串连接的运算符。
System.out.println("number is "+(20+010));
会给你一个不同的答案,涉及两个数字的整数相加,(20+010) 的最左边部分是一个数字。