为什么这种连接导致了" 208"而不是" 20010"

时间:2015-02-21 05:39:33

标签: concatenation

class Jspiders
{   

    public static void main(String[] args)
    {

        System.out.println("number is "+20+010);

    }
}

当我尝试打印" 2001"结果是201 ??

2 个答案:

答案 0 :(得分:2)

真的很酷!语言是java,我只是试了一下。我不知道java可以读取小数以外的数字文字,但我从来没有真正尝试过。它看起来像是因为它认为010是基数为8的数字并且是以八位字节形式

010 = 8
01 = 1
所以20 + 010会给你208(不是28,因为如果你输入(20 + 010)它会进行字符串连接然后它会打印28) 和20 + 01给你201 我也玩了一下,并注意到如果你做20 + 0xA它会给你2010(0xA是10十六进制)。 这就是为什么你得到这些结果。

答案 1 :(得分:0)

010是八进制数表示(基数8)

operator +适用于最左边的操作数的类型,这是一个字符串,因此+是字符串连接的运算符。

System.out.println("number is "+(20+010));

会给你一个不同的答案,包括2个数字的整数加法,(20 + 010)的最左边部分是一个数字。