本文目錄一覽:
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