我以为你不能在一个数组中混合类型(Java)

时间:2015-01-30 11:55:13

标签: java arrays types

这更多是理论问题。我有这段代码:

        String[] contacts = new String[10];

    for (int x = 0; x < contacts.length; x++)
    {
        contacts[x] = "Person" + x;
        System.out.println(contacts[x]);

    }

据我所知,数组只能有一种类型,但我已将变量x(这是一个int)连接到String的末尾并将其存储到数组中。 然而,当我尝试执行这个基于int的数组时,它并不喜欢它有意义,因为你不能在声明为持有int变量的数组中混合类型。 我很困惑,因为您可以在语句的末尾添加布尔值。

contacts[x] = "Person" + x + false

只要数组以String开头,你就可以逃脱它。 这是因为对象本身的String吗? 如果这是一个显而易见的问题,我真的很抱歉。我相信这与这个问题有关,但它并不能让我满意地回答Multiple type array

2 个答案:

答案 0 :(得分:1)

那是因为如果第一个元素是一个字符串,那么它会在toString()上调用x并在toString()变量上调用boolean。因此,您只需获得Person1falsePerson2false等等。它们都是String

将它们打印出来,你会看到。

答案 1 :(得分:1)

您不是要在数组中添加多种类型。与下面的语句一样,跟在字符串后面的任何+运算符将连接下一个变量,就像它被解析为调用to toString()一样。

contacts[x] = "Person" + x + false

所以上面的内容与之相同;

contacts[x] = "Person" + Objects.toString(x) + Objects.toString(false)

请注意,在上面,变量x和值false是自动装箱的。

进一步阅读;