本文目录一览:
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 目录 |
指定存放生成的类文件的位置 |
-encoding 编码 |
指定源文件使用的字符编码 |
-source 版本 |
提供与指定版本的源兼容性 |
-target 版本 |
生成特定 VM 版本的类文件 |
-version |
版本信息 |
-help |
输出标准选项的提要 |
-X |
输出非标准选项的提要 |
-J标志 |
直接将标志传递给运行时系统 |
使用-d 参数,如类中定义了包,则编译时会自动生成包: |
javac -d . helloworld.java
表示在当前目录下编译Helloworld
类。.
表示当前目录,如helloworld
中定义有包,则在当前目录下生成包。
java
用法:
java [-选项] 类 [参数...]
(执行一个类) 或者:
java [-选项] -jar jar文件 [参数...]
(执行一个jar文件) 其中,可能的选项包括:
选项 | 说明 |
---|---|
-client |
选择 "client" VM |
-server |
选择 "server" VM |
-hotspot |
与 "client" VM同义 [不赞成] |
-cp 路径 |
一个文件夹和zip/jar文件组成的类搜索路径 |
-classpath 路径 |
一个文件夹和zip/jar文件组成的类搜索路径 |
-D名字=值 |
设置一个系统属性 |
`-verbose[:class | gc |
-version |
打印产品版本然后退出 |
-version:值 |
只运行指定版本 |
-showversion |
打印产品版本后继续 |
-jre-restrict-search | -jre-no-restrict-search |
在版本搜索的时候,包含/排除用户私人的JRE |
-? | -help |
打印帮助信息 |
-X |
打印非标准选项帮助 |
`-ea[:包名... | :类名]| -enableassertions[:包名... |
`-da[:包名... | :类名]| -disableassertions[:包名... |
-esa | -enablesystemassertions |
使系统级断言可用 |
-dsa | -disablesystemassertions |
使系统级断言不可用 |
-agentlib:库名[=选项] |
加载本地代理库库名,例如:-agentlib:hprof |
-agentpath:路径名[=选项] |
通过全路径名来加载本地代理库 |
-javaagent:jar路径[=选项] |
加载Java编程语言代理,可查看 java.lang.instrument |
怎样用数组使用java命令行参数
哥们你看看下面解释还行吗?
java命令行的常用参数
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]
当虚拟机报告类找不到或类冲突时可用此参数来诊断来查看虚拟机从装入类的情况。