当前位置: 首页 > 面试题库 >

Java字符串数组差异

江宏放
2023-03-14
问题内容

我现在很无聊,正在做一些Java实践测试,因为我已经用Java编程了一段时间了。经过一个问题,我现在想知道以下两者之间的区别:

String[] test1 = { "A", "B", "C" };
String[] test2 = new String[]{ "A", "B", "C" };
String test3[] = { "A", "B", "C" };
String test4[] = new String[]{ "A", "B", "C" };

在Java IDE中键入此命令时,没有出现任何错误。我还没有尝试编译它们中的任何一个(尽管我过去主要使用test2自己,所以我知道其中一个可以奏效)。

  • 那么,它们每个都可以编译吗?
  • 如果是的话,有什么区别(如果有)?
  • test1对于性能而言,比test2不进行新的String[]实例化还是要在幕后完成此操作要好?)
  • (如果test1test3:相同,为什么test3test4Java test1和and 相同,并且为什么在Java中存在test2?在任何情况下,[]在类型名称之后使用field-name还是首选?)
  • (除了这四个以外,还有更多(几乎相似)的变体吗?)
  • (以及其他类似问题)。

只是出于好奇而想知道。我想每天我们都会学到新东西。


问题答案:

它们都是等效的。

  • 那么,它们每个都可以编译吗?

是的,您自己也可以验证。

  • 如果是的话,有什么区别(如果有)?
  • (因为您没有创建新的String []实例,或者在幕后进行了此操作,所以test1的性能比test2好吗?)

编译后的字节码没有区别。

  • (如果test1与test3相同:为什么test3和test4与test1和test2相同,则为什么存在?)

这只是写它的一种替代方法,因为数组索引可以放在类型名称之后,也可以放在标识符名称之后。唯一的区别是,如果在一行中声明多个变量,如果将索引放置在类型名称之后,则所有列出的标识符将是该类型的数组,而如果将索引放置在标识符名称之后,则仅该标识符将是数组。

例:

String[] array1, array2;    // Both are arrays
String array3[], notArray4; // Only array3 is array

我建议将索引放在类型(String[] array1)后面,这样就不会造成歧义。

(除了这四个以外,还有更多(几乎相似)的变体吗?)

从来没听说过。



 类似资料:
  • 这些声明有什么不同? 每种情况下的内存分配情况如何?

  • 问题内容: 我有阵列 转换为字符串: 串: 以及如何将此字符串转换回数组? 问题答案: 尝试我的stringToDeep()方法转换回Array。

  • 问题内容: 我需要将一个String拆分为单个字符String的数组。 例如,拆分“ cat”将得到数组“ c”,“ a”,“ t” 问题答案: 这将产生

  • 问题内容: 我是一名刚从C ++转到Java的学生。 在Java中,为String和Char数组定义单独的数据类型的主要原因可能是什么? 两者有什么区别? 由于我只学习过C ++,所以直到现在我仍对它们有同感。请尽可能澄清。 问题答案: 是一成不变的。数组不是。字符串是在下面用char数组实现的,但是每次您尝试对其进行修改(例如,使用串联,替换等)时,它都会为您提供一个 新 对象。 因此,它表现为

  • 问题内容: 我对此感到困惑,我需要一些新鲜的眼睛,我不确定为什么这段代码会这样做。 输出是直到最后一个数字(0xFC)返回-4为止的所有内容,我知道它是一个十六进制值,但是如果我对252的十进制值也一样,它也会给我一个负数。我希望这只是一个简单的解决方案,我看不到它。 提前谢谢。 问题答案: 字符串到char数组很简单 您能否再解释一下您要做什么? 更新 如果我理解您的新评论,则可以使用字节数组,

  • 问题内容: 我试图理解一个到字符串,一个的字符串表示形式到转换…我将我的转换成一个要发送的字符串,然后我希望我的Web服务(用python编写)将数据直接回显给客户端。 当我从Java应用程序发送数据时… 字节发送.. 发送(这是Arrays.toString()的结果,它应该是我的字节数据的字符串表示形式,该数据将通过电线发送): 在python端,python服务器将字符串返回给调用方(我可以