java命令行参数是什么 java main方法中的命令行参数
今天给各位分享java命令行参数是什么的知识,其中也会对java 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 的命令行 编译和运行参数 如:-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 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程序时加上程序的参数。
例子如下:
public class HelloWorld{
public static void main(String args[]){
System.out.println("temp="+ args[0]);
}
}
源代码截图:
命令行中截图:
解释一下: String[ ] args
该参数,是一个字符串数组,用来接收从命令行输入的参数
1.参数之间用空格隔开
2. java解释器会自动处理,把用空格隔开的每一个参数通过args数组传递给买呢()方法。
3.参数的下标从0开始,args[0]表示第一个参数,例如java HelloWorld 10 20 30
4.可以有多个空格,多个空格会被忽略。
扩展资料:
Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。
Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。
参考资料:百度百科-网页链接
文章到此结束,如果本次分享的java命令行参数是什么和java main方法中的命令行参数的问题解决了您的问题,那么我们由衷的感到高兴!