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
...所以它要取第一个数组,并自动包装它以适应二维数组??真奇怪。有人能解释一下这是怎么回事吗?我很确定我错过了什么。
正在调用第二个main
函数(使用String[]
作为参数的函数)。
在此函数中,您将newargs
创建为只包含一个元素的二维数组,该元素就是数组{a,b,c}
。
因此,当您打印参数[0][1]
时,您将打印数组{a,b,c}
的索引1
处的元素,即b
!
既然String是JAVA中的一个类,那么在不使用新运算符的情况下,test1如何成为String对象呢?另外,当使用新运算符时,内存会分配给新的String(“testing”),那么在test1的情况下,内存是如何分配的呢?另外,当字符串被临时存储时,如果两个字符串具有相同的值,引用的是什么,那么该字符串在字符串临时存储池中存储一次?
问题内容: 看完之后,我才知道,是物体。数组的名称不是实际的数组,而只是引用。new运算符在堆上创建数组,并返回对新创建的数组对象的引用,然后将其分配给数组变量(名称)。类似于以下内容: 但是我也使用了这两种类型的数组声明。 和 以上两项均合法且可以正常工作。那么这两者之间有什么区别,我应该何时使用它们? 问题答案: 这将生成一个大小为5的数组,其中包含5个null元素: 如果这些值在编译时不是您
%1有编译器错误,而%2是合法的。 为什么变量声明的类型必须与我们传递给对象类型的类型匹配(不允许派生类型)?我使用的数组如下所示,这是完全正确的: 有人能告诉我为什么集合必须声明为条件2吗?谢谢
我习惯像这样声明数组内联: 为什么我不能对函数执行相同的操作?假设我有一个类,其中包含and 方法,这是有效的: 但是,这不是: 它不喜欢内联数组声明,编译器错误是“不能创建函数的泛型数组” 编辑 我认为我的问题不是建议的副本,因为我想使用数组初始值设定项语法静态定义一组函数
问题内容: 我正在运行Tomcat应用程序,并且需要显示一些时间值。不幸的是,时间要花一个小时了。我调查了一下,发现我的默认TimeZone设置为: 而不是太平洋时区。当我尝试打印默认时区的显示名称时,这会进一步指示,并且显示为 “ GMT-08:00”,这似乎向我表明它未正确设置为美国太平洋时区。我在从Gutsy Gibbon升级的Ubuntu Hardy Heron上运行。 我是否可以更新配置
数组要占用内存空间。程序员指定每个元素的类型和每个数组所要的元素,使编译器可以保留相应的内存空间。要告诉编译器对整型数组c保留12个元素,可以声明如下: int c[12]; 可以在一个声明中为几个数组保留内存。下列声明对整型数组 b 保留 100 个元素,对整型数组x保留27个元素: int b[100],x[27]; 数组可以声明包含其他数据类型。例如,char 类型的数组可以存放字符串。字符