我以为你不能';t在数组中混合类型(Java)
这更多的是理论问题。我有一段代码:我以为你不能';t在数组中混合类型(Java),java,arrays,types,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]); } 只要数组以字符串开头,就可以不使用它。 这是因为对象本身中的字符串吗? 如果这是一个明显的问题
String[] contacts = new String[10];
for (int x = 0; x < contacts.length; x++)
{
contacts[x] = "Person" + x;
System.out.println(contacts[x]);
}
只要数组以字符串开头,就可以不使用它。
这是因为对象本身中的字符串吗?
如果这是一个明显的问题,我真的很抱歉。我相信这与这个问题有关,但它并没有让我满意地回答它,因为如果第一个元素是字符串,那么它在
x
上调用toString()
,在布尔变量上调用toString()
。所以你只需要得到Person1false
,Person2false
等等。它们都是String
contacts[x] = "Person" + x + false
打印出来,您会看到。您没有向数组中添加多个类型。与下面的语句一样,字符串后面的任何+
运算符都将连接下一个变量,就好像它被解析为调用toString()
因此,上述内容与:
contacts[x] = "Person" + Objects.toString(x) + Objects.toString(false)
请注意,在上面的示例中,变量x
和值false
是自动装箱的
进一步阅读
+是字符串运算符重载。“Person”+x.ToString()
这是因为如果第一个元素是字符串,那么它调用x
上的ToString()
,并调用布尔变量上的ToString()
。因此,您只需将Person1false
,Person2false
等等。您只需添加String
而不是int
也不是boolean
,因为它们被转换为String
s。每当您将某个字符串连接到这样的字符串时-String str=“abc”+something
,someOtherThing
通过调用someOtherThing.toString()
自动转换为字符串,因此基本上您将拥有一个字符串。谢谢,我以为是这样,但我不确定,因此它基本上会将值转换为字符串。谢谢,现在有意义了。方法toString将值转换为字符串表示形式,因此它们都是字符串。是的!正是这样:DI没有意识到Java会自动进行转换,所以这将是自动装箱的例子,而取消装箱则是相反的例子
contacts[x] = "Person" + Objects.toString(x) + Objects.toString(false)