Java Array声明混淆[重复]
Posted
技术标签:
【中文标题】Java Array声明混淆[重复]【英文标题】:Java Array declaration confusion [duplicate] 【发布时间】:2017-10-28 14:48:26 【问题描述】:给定一个名为 ThisClass 的类,它只包含这个:
public static void main(String[][] args)
System.out.println(args[0][1]);
public static void main(String[] args)
ThisClass app = new ThisClass();
String[][] newargs = args;
app.main(newargs);
如果你编译它然后用java ThisClass a b c
运行它,它会打印:
b
...所以它采用第一个数组并自动包装它以适应二维数组?这很奇怪。有人可以分解这里发生的事情吗?我很确定我错过了一些东西。
【问题讨论】:
在java中真的没有任何'2d'数组,只有数组的数组。没有自动包装,您获取了一个数组,然后使用数组文字语法将其放入另一个数组中。因此,您制作了一个数组数组。 【参考方案1】:正在调用第二个 main
函数(以 String[]
作为参数的函数)。
在此函数中,您将 newArgs
创建为一个仅包含一个元素的二维数组,此元素为数组 a, b, c
。
因此,当您打印args[0][1]
时,您会打印数组a, b, c
的索引1
处的元素,即b
!
【讨论】:
【参考方案2】:在System.out.println(args[0][1]);
中,args[0]
与String[]
相同
public static void main(String[] args)
ThisClass app = new ThisClass();
String[][] newargs = args;
app.main(newargs);
因为newargs
包含一个元素String[] args
。因此,您正在 printlng args[1]
which 是 b
。
【讨论】:
以上是关于Java Array声明混淆[重复]的主要内容,如果未能解决你的问题,请参考以下文章
Proguard 混淆导致 java.lang.IllegalArgumentException:类声明多个名为“a”的 JSON 字段