本文目錄一覽:
- 1、java main方法中的命令行參數
- 2、java的-D命令行參數
- 3、java命令行參數是什麼意思
- 4、java 中 用命令行參數接收輸入 如何判斷接收的數據是什麼數據類型
- 5、Java 的命令行 編譯和運行參數 如:-cp 怎麼理解?
- 6、怎樣用數組使用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的-D命令行參數
$LOG是系統環境變量 可能是在你的腳本里定義的也可能是全局定義的,你可以用echo $LOG看一下是什麼.這種-DXXXX是java運行參數的語法
作用是配置一些環境變量,具體有哪些參數,參數有什麼效果,和你用的實際環境、項目架構都有關
對,讓程序知道log_path代表什麼,具體程序怎麼用,那是程序的事了
System.getProperty(“propertyName”) 比如你的就是System.getProperty(“log_path”)就可以拿到了
java命令行參數是什麼意思
這個名詞我們可以分開來看:
“命令行”就是:DOC命令行”了,也就是那個黑色的框框。
“參數就”是程序裡面所需要的”參數”了。
合起來”命令行參數”就是“在DOC下輸入的程序所需的參數”。
java 中 用命令行參數接收輸入 如何判斷接收的數據是什麼數據類型
一、在命令行或控制台中接收的數據,都是字符串型,需要強制轉換。
強制轉換時,需做空判斷,如 if(str != null !str.trim().equals(“”)){
int i = Integer.parseInt(str);}
二、其他情況判斷數據類型時,可以用java的反射機制。舉個例子:
import java.util.HashMap;
import java.util.Map;
public class Test {
public static void main(String aaa[]) {
Map m = new HashMap();
String s1 = “String1”;
String s2 = “String2”;
int i1 = 5;
double i2 = 10.5;
m.put(1, s1);
m.put(2, i1);
m.put(3, i2);
m.put(4, s2);
for (int i = 1; i = m.size(); i++) {
Class returnType = m.get(i).getClass();
System.out.println(“return type is of type: “
+ returnType.getSimpleName());
}
}
}
Java 的命令行 編譯和運行參數 如:-cp 怎麼理解?
javac
用法:javac 選項 源文件
其中,可能的選項包括:
-g 生成所有調試信息
-g:none 不生成任何調試信息
-g:{lines,vars,source} 只生成某些調試信息
-nowarn 不生成任何警告
-verbose 輸出有關編譯器正在執行的操作的消息
-deprecation 輸出使用已過時的 API 的源位置
-classpath 路徑 指定查找用戶類文件的位置
-cp 路徑 指定查找用戶類文件的位置
-sourcepath 路徑 指定查找輸入源文件的位置
-bootclasspath 路徑 覆蓋引導類文件的位置
-extdirs 目錄 覆蓋安裝的擴展目錄的位置
-endorseddirs 目錄 覆蓋簽名的標準路徑的位置
-d 目錄 指定存放生成的類文件的位置
使用-d參數,如類中定義了包,則編譯時會自動生成包, 如:javac -d . helloworld.java
表示在當前目錄下編譯Helloworld 類。.表示當前目錄,如helloword中定義有包,則在當前目錄下生成包:
-encoding 編碼 指定源文件使用的字符編碼
-source 版本 提供與指定版本的源兼容性
-target 版本 生成特定 VM 版本的類文件
-version 版本信息
-help 輸出標準選項的提要
-X 輸出非標準選項的提要
-J標誌 直接將 標誌 傳遞給運行時系統
java
用法: java [-選項] 類 [參數…]
(執行一個類)
或者 java [-選項] -jar jar文件 [參數…]
(執行一個jar文件)
其中,可能的選項包括:
-client 選擇 “client” VM(ginger547:應該是指Virtual Machine)
-server 選擇 “server” VM
-hotspot 與 “client” VM同義 [不贊成]
默認情況的VM是client.
-cp 一個文件夾和zip/jar文件組成的類搜索路徑
-classpath 一個文件夾和zip/jar文件組成的類搜索路徑
一個由文件夾,JAR壓縮文件,或者ZIP壓縮文件組成的用來搜索類的列表
-D名字=值
設置一個系統屬性
-verbose[:class|gc|jni]
使詳細輸出變的可用
-version 打印產品版本然後退出
-version:值
只運行指定版本
-showversion 打印產品版本後繼續
-jre-restrict-search | -jre-no-restrict-search
在版本搜索的時候,包含/排除用戶私人的JRE
-? -help 打印幫助信息
-X 打印非標準選項幫助
-ea[:包名…|:類名]
-enableassertions[:包名…|:類名]
使斷言可用
-da[:包名…|:類名]
-disableassertions[:包名…|:類名]
是斷言不可用
-esa | -enablesystemassertions
使系統級斷言可用
-dsa | -disablesystemassertions
使系統級斷言不可用
-agentlib:庫名[=選項]
加載本地代理庫庫名,例如. -agentlib:hprof
同時可查看, -agentlib:jdwp=help和 -agentlib:hprof=help
-agentpath:路徑名[=選項]
通過全路徑名來加載本地代理庫
-javaagent:jar路徑[=選項]
加載Java編程語言代理,可查看 java.lang.instrument
怎樣用數組使用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]
當虛擬機報告類找不到或類衝突時可用此參數來診斷來查看虛擬機從裝入類的情況。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/237605.html