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字符串。 (我认为ObjecthashCode的默认实现指示数组在内存中的位置,这就是为什么它对于程序的不同调用是不同的,但这是未指定的行为,无论如何都不会对你有任何用处。)

main方法中的String[] args是命令行参数的String数组。

[Ljava.lang.String;@1d1e730是类名( [Ljava.lang.StringString[] )和对象的哈希码( @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'之后打印了一些参数