为什么这种连接导致“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) 的最左边部分是一个数字。