Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我以为你不能';t在数组中混合类型(Java)_Java_Arrays_Types - Fatal编程技术网

我以为你不能';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)