![](/img/trans.png)
[英]What happens when String args[] is replaced with int args[] in Java?
[英]What does “String[] args” contain in java?
當我運行以下程序時:
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]: one args[1]: two args[2]: three
如果你不需要索引,或者像這樣循環:
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
作為十六進制字符串。 (我認為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);
它是一種名稱修改形式,用於消除方法重載的歧義。 方法名稱附加了一系列描述參數和返回類型的字符:參數在括號內依次出現,返回類型在右括號后面。 代碼如下:
所以根據上面的代碼[Ljava.lang.String;@153c375
字符串數組(java.lang.String完全限定類名)后跟hascode。
Object的toString
方法的默認實現是classname;@identityHashCode
。 我想,這就是你的期望:
System.out.println(java.util.Arrays.toString(args));
String[] args
是一個字符串數組,包含應用程序啟動時給出的參數。 Java不要求你使用名稱args,你也可以指定String[] foo
但如果你以后再次閱讀你的代碼,這將使事情變得不清楚。
這是一個字符串數組。
1.將您的代碼修改為:
public class Test{ public static void main(String[] args){ System.out.println(args[0]); } }
2. java Test 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<args.length; i++)
System.out.println(""+args[i]);
}
}
java HelloWorld a b c
我們可以看到這個程序在'java Helloworld'abc之后打印了thouse參數
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.