本文目錄一覽:
java命令行參數是什麼意思
這個名詞我們可以分開來看:
「命令行”就是:DOC命令行”了,也就是那個黑色的框框。
“參數就”是程序裏面所需要的”參數”了。
合起來”命令行參數」就是「在DOC下輸入的程序所需的參數」。
請詳細寫出Javac和Java兩個命令的使用方式
javaac和java兩個命令的使用詳解:
一、javac命令
javac 用於編譯Java文件,格式為:
java [options] [sourcefiles] [@files]
其中:
options:命令行選項;
sourcefiles:一個或多個要編譯的源文件;
@files:一個或多個對源文件進行列表的文件,有時候要編譯的文件很多,一個個敲命令會顯得很長,也不方便修改,可以把要編譯的源文件列在文件中,在文件名前加@,這樣就可以對多個文件進行編譯,對編譯一個工程很有用,方便,省事。
有幾個比較重要的選項:
-d 用於指定編譯成的class文件的存放位置,缺省情況下不指定class文件的存放目錄,編譯的class文件將和源文件在同一目錄下;
-classpath 可以簡寫成-cp,用於搜索編譯所需的class文件,指出編譯所用到的class文件的位置,如jar、zip或者其他包含class文件的目錄,指定該選項會覆蓋CLASSPATH的設定;
-sourcepath用於搜索編譯所需的源文件(即java文件),指定要搜索的源文件的位置,如jar、zip或其他包含java文件的目錄;
需要注意windows下和linux下文件路徑分隔符和文件列表(即-classpath和-sourcepath指定的文件)分隔符的區別:
windows下文件路徑分隔符用 \ ,文件列表分隔符用分號 ;
linux下文件路徑分隔符用 / ,文件列表分隔符用冒號 :
二、java命令
java 用於執行程序,格式如下:
java [options] classfile
options:命令行選項,一般用於 -classpath 指定要執行的文件所在的位置以及需要用到的類路徑,包括jar、zip和class文件目錄,會覆蓋CLASSPATH的設定
三、腳本
如果要敲的命令很長,每次要編譯運行的時候都要重新敲一遍,這是一件很痛苦的事情,所以用腳本可以大大方便你的工作量。在linux下用shell腳本,windows下用bat批處理程序。因為是在linux下,我這裡只是簡單介紹一下shell,關於bat批處理程序的語法自己百度一下,不難。
1. 開頭
linux有很多不同的shell,通常使用bash(bourne again shell),程序必須以下面的行開始:
#!/bin/sh
#!用來告訴系統用後面的參數來執行程序,這裡使用的是/bin/sh
要使你的腳本能夠執行,還必須讓這個文件有可執行權限,使用下面命令更改文件權限:
chmod +x filename
2. 注釋
以#開始的句子表示注釋,一直到這行結束,多寫注釋有利於以後重新看的時候知道自己在做什麼
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);
}
}
這種類似的方法估計應該有很多吧,但這個應該算是比較輕量級的。當然若參數非常多(同時也得進行驗證輸入)
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/152603.html