簡體   English   中英

java中包含“String [] args”是什么?

[英]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作為十六進制字符串。 (我認為ObjecthashCode的默認實現指示了數組所在內存的位置,這就是為什么它對程序的不同調用有所不同,但這是未指定的行為,無論如何都不會對你有任何用處。)

main方法中的String[] args命令行參數的String數組。

[Ljava.lang.String;@1d1e730是類名( [Ljava.lang.StringString[] )和對象的哈希碼( @1d1e730 );

如果要在數組中打印字符串的實際值,可以使用簡單的for-each循環:

for(String arg:args)
    System.out.println(arg);

它是一種名稱修改形式,用於消除方法重載的歧義。 方法名稱附加了一系列描述參數和返回類型的字符:參數在括號內依次出現,返回類型在右括號后面。 代碼如下:

  • Z:布爾值
  • B:字節
  • C:char
  • S:簡短
  • 我:int
  • J:很久
  • F:漂浮
  • D:加倍
  • L完全合格的班級名稱; :完全合格的班級
  • [類型:類型數組
  • V:無效

所以根據上面的代碼[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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM