java命令行參數,java命令行參數輸入

本文目錄一覽:

java main方法中的命令行參數

當你使用命令行的形式運行.class文件時,向你的類傳遞參數.

C:\java

YourClassName

參數1

[參數2

參數3

….]

參數之間用一個空格作為間隔符.

String[] args 這個字元串數組是保存運行main函數時輸入的參數的,例如main函數所在的類名為test

那麼你在cmd運行

java

test

a b

c 時,args[0]

= a

,args[1]=b,

args[2]=c

你就可以在你的程序中調用你輸入的這些變數了。

args[]不就是那個字元串This is a simple Java program嗎?

-------完全不是的,你理解不對。這樣好了,你在運行的時候加個參數,比如 java test XX。然後在你的main函數裡面加這段話:System.out.println(“arg is”+args[0]),然後看看輸出是什麼?

是不是這個:

This is a simple Java program

arg is XX

在運行時輸入java test xx yy zz,並且在你的main函數裡面加這段話:System.out.println(“arg is”+args[0]+” “+args[1]+” “+args[2]),然後看看輸出是什麼?

是不是:

This is a simple Java program

arg is xx yy zz

現在你理解了嗎。。。

如果沒關係,為什麼程序中去掉String args[]會出現錯誤?

--------之所以去掉會出錯在於,不帶String args[]的main函數和帶String args[]的main函數,本質上已經不是同一個函數了,java 本身不存在不帶String args[]的main函數,所以當然出錯了。

Java怎麼解析命令行參數

用慣了控制台的java程序之後,最印象深刻的是其的簡單與快捷,雖沒有圖形界面那樣吸引人的眼球,但卻也足以迷倒眾生。那麼java命令行參數有哪些呢?跟gkstk小編一起來學習吧!

控制台程序的運行少不了要通過控制台來傳遞參數,譬如:

Sh代碼

ls -la

這是shell腳本的常用命令,其就是通過後置參數來傳遞相關信息。UNIX環境為C語言中提供了getopt()這樣的函數可以解析後置參數,這個函數是很實用很強大的,但Java就…(我Google了一下,倒沒有怎麼找出來)。大概是這個功能對Java來說太不足掛齒了吧,但總得有個解決方法才行。

下面就是一個代碼實例,用以說明。

這個實例運行的結果是運行在控制台,並允許可選的輸入參數:

Sh代碼

java TestOpt -i 89 -b -s TestString

那麼就會設置幾個prarameter的值

Java代碼

public class TestOpt {

public static void main(String[] args) {

/*

* 這裡先取默認值,因為不是所有參數都會被用戶提供

*/

boolean prarameter1 = false;

int prarameter2 = 0;

String prarameter3 = “”;

/*

* 設置一個offset變數,用來定位相關信息

*/

int optSetting = 0;

for (; optSetting args.length; optSetting++) {

if (“-b”.equals(args[optSetting])) {

prarameter1 = true;

} else if (“-i”.equals(args[optSetting])) {

prarameter2 = Integer.parseInt(args[++optSetting]);

} else if (“-s”.equals(args[optSetting])) {

prarameter3 = args[++optSetting];

}

}

/*

* 這裡我只是列印出來相關的設置信息,具體的行為肯定是要自己取定義打

*/

System.out.println(prarameter1);

System.out.println(prarameter2);

System.out.println(prarameter3);

}

}

這種類似的方法估計應該有很多吧,但這個應該算是比較輕量級的。當然若參數非常多(同時也得進行驗證輸入)

怎樣用數組使用java命令行參數

哥們你看看下面解釋還行嗎?

java命令行的常用參數

2008-09-05 18:38

java -classpath/-cp

虛擬機在運行一個類時,需要將其裝入內存,虛擬機搜索類的方式和順序如下:

Bootstrap classes,Extension classes,User classes。

Bootstrap中的路徑是虛擬機自帶的jar或zip文件,虛擬機首先搜索這些包文件,用System.getProperty(“sun.boot.class.path”)可得到虛擬機搜索的包名。

Extension是位於jre\lib\ext目錄下的jar文件,虛擬機在搜索完Bootstrap後就搜索該目錄下的jar文件。用System. getProperty(“java.ext.dirs」)可得到虛擬機使用Extension搜索路徑。

User classes搜索順序為當前目錄、環境變數 CLASSPATH、-classpath。

-classpath告知虛擬機搜索目錄名、jar文檔名、zip文檔名之間用分號;分隔。

例如當你自己開發了公共類並包裝成一個common.jar包,在使用common.jar中的類時,就需要用-classpath common.jar 告訴虛擬機從common.jar中查找該類,否則虛擬機就會拋出java.lang.NoClassDefFoundError異常,表明未找到類定義。在運行時可用System.getProperty(「java.class.path」)得到虛擬機查找類的路徑。

使用-classpath後虛擬機將不再使用CLASSPATH中的類搜索路徑,如果-classpath和CLASSPATH都沒有設置,則虛擬機使用當前路徑(java.exe所在路徑)作為類搜索路徑。

推薦使用-classpath來定義虛擬機要搜索的類路徑,而不要使用環境變數CLASSPATH的搜索路徑,以減少多個項目同時使用CLASSPATH時存在的在衝突。例如應用1要使用a1.0.jar中的類G,應用2要使用a2.0.jar中的類G,a2.0.jar是a1.0.jar的升級包,當a1.0.jar,a2.0.jar都在CLASSPATH中,虛擬機搜索到第一個包中的類G時就停止搜索,如果應用1應用2的虛擬機都從CLASSPATH中搜索,就會有一個應用得不到正確版本的類G。

java -version

顯示虛擬機版本信息。

java -verbose/-verbosse:class

verbose和verbose:class含義相同,輸出虛擬機裝入的類的信息,顯示的信息格式如下:

[Loaded java.io.FilePermission$1 from shared objects file]

當虛擬機報告類找不到或類衝突時可用此參數來診斷來查看虛擬機從裝入類的情況。

java命令行參數。

import org.apache.commons.cli.CommandLineParser;

import org.apache.commons.cli.BasicParser;

import org.apache.commons.cli.Options;

import org.apache.commons.cli.CommandLine;

public static void main(String[] args) throws Exception {

// Create a Parser

CommandLineParser parser = new BasicParser( );

Options options = new Options( );

options.addOption(“h”, “help”, false, “Print this usage information”);

options.addOption(“v”, “verbose”, false, “Print out VERBOSE information” );

options.addOption(“f”, “file”, true, “File to save program output to”);

// Parse the program arguments

CommandLine commandLine = parser.parse( options, args );

// Set the appropriate variables based on supplied options

boolean verbose = false;

String file = “”;

if( commandLine.hasOption(‘h’) ) {

System.out.println( “Help Message”)

System.exit(0);

}

if( commandLine.hasOption(‘v’) ) {

verbose = true;

}

if( commandLine.hasOption(‘f’) ) {

file = commandLine.getOptionValue(‘f’);

}

}

cli下載地址:

上面是代碼片段使用方法:

java xxxx -h

java xxxx -f 119

原創文章,作者:WOZH,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/147988.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
WOZH的頭像WOZH
上一篇 2024-11-02 13:13
下一篇 2024-11-02 13:13

相關推薦

  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Bean載入過程

    Java Bean載入過程涉及到類載入器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean載入的過程。 一、類載入器 類載入器是Java虛擬機…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發布。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29
  • 三星內存條參數用法介紹

    本文將詳細解釋三星內存條上面的各種參數,讓你更好地了解內存條並選擇適合自己的一款。 一、容量大小 容量大小是內存條最基本的參數,一般以GB為單位表示,常見的有2GB、4GB、8GB…

    編程 2025-04-29
  • Python3定義函數參數類型

    Python是一門動態類型語言,不需要在定義變數時顯示的指定變數類型,但是Python3中提供了函數參數類型的聲明功能,在函數定義時明確定義參數類型。在函數的形參後面加上冒號(:)…

    編程 2025-04-29
  • Java判斷字元串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字元串中是否存在多個指定字元: 一、字元串遍歷 字元串是Java編程中非常重要的一種數據類型。要判斷字元串中是否存在多個指定字元…

    編程 2025-04-29
  • VSCode為什麼無法運行Java

    解答:VSCode無法運行Java是因為默認情況下,VSCode並沒有集成Java運行環境,需要手動添加Java運行環境或安裝相關插件才能實現Java代碼的編寫、調試和運行。 一、…

    編程 2025-04-29

發表回復

登錄後才能評論