当我运行以下程序时:
public class Test
{
public static void main(String[] args)
{
System.out.println(args);
}
{
Run Code Online (Sandbox Code Playgroud)
它打印: [Ljava.lang.String;@153c375
当我再次运行时,它打印: [Ljava.lang.String;@1d1e730
它每次给我不同的输出
那么," [Ljava.lang.String;@153c375"是什么意思呢?
T.J*_*der 20
更新:我刚刚意识到我从来没有回答过"在Java中包含什么"字符串[] args"的问题?" :-)这是一个提供给程序的命令行参数数组,每个参数都是String数组中的一个.
我们现在恢复我们定期安排的答案......
args是一个数组.看个别命令行参数,索引到阵列- args[0],args[1]等:
你可以像这样遍历args:
public class Test
{
public static void main(String[] args)
{
int index;
for (index = 0; index < args.length; ++index)
{
System.out.println("args[" + index + "]: " + args[index]);
}
}
}
Run Code Online (Sandbox Code Playgroud)
因为java Test one two three,那将输出:
args[0]: one args[1]: two args[2]: three
如果你不需要索引,或者像这样循环:
public class Test
{
public static void main(String[] args)
{
for (String s : args)
{
System.out.println(s);
}
}
}
Run Code Online (Sandbox Code Playgroud)
那么,
"[Ljava.lang.String;@153c375"意味着什么?
这是Java ((数组)的默认toString返回值.见.的手段"阵列",则是指"类或接口",并且是不言自明的.那部分来自.的是随后的阵列作为十六进制字符串的.(我认为for 的默认实现表明数组在内存中的位置,这就是为什么它对程序的不同调用有所不同,但这是未指定的行为,无论如何都不会对你有任何用处.)String[]StringObject#toString[Ljava.lang.StringClass#getName();@153c375;@hashCodehashCodeObject
String[] args在main方法中是命令行参数的String数组.
[Ljava.lang.String;@1d1e730是类名([Ljava.lang.String是String[])和对象的hashcode(@1d1e730);
如果要在数组中打印字符串的实际值,可以使用简单的for-each循环:
for(String arg:args)
System.out.println(arg);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
30671 次 |
| 最近记录: |