java中包含“String args”的内容是什么?
当我运行以下程序时:
public class Test { public static void main(String[] args) { System.out.println(args); } {
它打印: [Ljava.lang.String;@153c375
当我再次运行时,它打印: [Ljava.lang.String;@1d1e730
它每次给我不同的输出
那么,“ [Ljava.lang.String;@153c375
”是什么意思?
更新 :我刚刚意识到我从来没有回答过“在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]); } } }
对于java Test one two three
,将输出:
args [0]:一个 args [1]:两个 args [2]:三
如果你不需要索引,或者像这样循环:
public class Test { public static void main(String[] args) { for (String s : args) { System.out.println(s); } } }
那么,
"[Ljava.lang.String;@153c375"
是什么意思?
这是Java的String[]
( String
数组)的默认toString
返回值。 请参见Object#toString
。 [
表示“数组”, L
表示“类或接口”, java.lang.String
是不言自明的。 那部分来自Class#getName()
。 ;@153c375
是;@
后跟数组的hashCode
作为hex字符串。 (我认为Object
的hashCode
的默认实现指示数组在内存中的位置,这就是为什么它对于程序的不同调用是不同的,但这是未指定的行为,无论如何都不会对你有任何用处。)
main方法中的String[] args
是命令行参数的String数组。
[Ljava.lang.String;@1d1e730
是类名( [Ljava.lang.String
是String[]
)和对象的哈希码( @1d1e730
);
如果要在数组中打印字符串的实际值,可以使用简单的for-each循环:
for(String arg:args) System.out.println(arg);
它是一种名称修改forms,用于消除方法重载的歧义。 方法名称附加了一系列描述参数和返回类型的字符:参数在括号内依次出现,返回类型在右括号后面。 代码如下:
- Z:布尔值
- B:字节
- C:char
- S:简短
- 我:int
- J:很久
- F:漂浮
- D:加倍
- L完全合格的class级名称; :完全合格的class级
- [type:数组类型
- V:无效
所以根据上面的代码[Ljava.lang.String;@153c375
字符串数组(java.lang.String完全限定类名)后跟hascode。
String[] args
是一个字符串数组,包含应用程序启动时给出的参数。 Java不要求你使用名称args,你也可以指定String[] foo
但如果你以后再次阅读你的代码,这将使事情变得不清楚。
Object的toString
方法的默认实现是classname;@identityHashCode
。 我想,这就是你的期望:
System.out.println(java.util.Arrays.toString(args));
这是一个字符串数组。
1.将您的代码修改为:
public class Test{ public static void main(String[] args){ System.out.println(args[0]); } }
2. java Test hello
这将打印: hello
因为hello是你传递给你的类的参数。
如果您尝试: args[x], where x=0..n
并通过命令行运行您的类:java测试您的参数,然后您将看到您传递的任何内容..
main方法有一个参数,它是一个String引用数组。 所以每次你尝试打印args时,它都会给你数组’args’的内存位置,因为这个String数组args在数组元素的内存中找到了一个位置。
那就是说你有一个名为’HelloWorld.java’的简单程序,如下所示:
public class HelloWorld { public static void main(String [] args) { for(int i =0; i
准备使用命令行界面测试此程序:
java HelloWorld abc
我们可以看到这个程序在'java Helloworld'之后打印了一些参数