java命令參數詳解,JAVA命令行參數

本文目錄一覽:

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

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-13 06:05
下一篇 2024-11-13 06:05

相關推薦

發表回復

登錄後才能評論