「java命令行参数」java命令行参数的使用方法

博主:adminadmin 2022-12-24 07:27:06 83

本篇文章给大家谈谈java命令行参数,以及java命令行参数的使用方法对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

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命令行参数的使用方法、java命令行参数的信息别忘了在本站进行查找喔。

The End

发布于:2022-12-24,除非注明,否则均为首码项目网原创文章,转载请注明出处。