首页 > 编程知识 正文

java命令参数详解,JAVA命令行参数

时间:2023-12-27 22:27:54 阅读:326977 作者:VJYP

本文目录一览:

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);

}

}

这种类似的方法估计应该有很多吧,但这个应该算是比较轻量级的。当然若参数非常多(同时也得进行验证输入)

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。