这更多是理论问题。我有这段代码:
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
答案 0 :(得分:1)
那是因为如果第一个元素是一个字符串,那么它会在toString()
上调用x
并在toString()
变量上调用boolean
。因此,您只需获得Person1false
,Person2false
等等。它们都是String
。
将它们打印出来,你会看到。
答案 1 :(得分:1)
您不是要在数组中添加多种类型。与下面的语句一样,跟在字符串后面的任何+
运算符将连接下一个变量,就像它被解析为调用to toString()
一样。
contacts[x] = "Person" + x + false
所以上面的内容与之相同;
contacts[x] = "Person" + Objects.toString(x) + Objects.toString(false)
请注意,在上面,变量x
和值false
是自动装箱的。
进一步阅读;