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

发布时间:2022-11-20

本文目录一览:

  1. java命令行参数是什么意思
  2. 请详细写出Javac和Java两个命令的使用方式
  3. java main方法中的命令行参数
  4. Java怎么解析命令行参数

java命令行参数是什么意思

这个名词我们可以分开来看: “命令行”就是:DOC命令行”了,也就是那个黑色的框框。 “参数”就是程序里面所需要的“参数”了。 合起来“命令行参数”就是“在DOC下输入的程序所需的参数”。

请详细写出Javac和Java两个命令的使用方式

javacjava 两个命令的使用详解:

一、javac命令

javac 用于编译Java文件,格式为:

javac [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]);

然后看看输出是什么? 是不是这个:

arg is XX

在运行时输入:

java test xx yy zz

并且在你的main函数里面加这段话:

System.out.println("arg is " + args[0] + " " + args[1] + " " + args[2]);

然后看看输出是什么? 是不是:

arg is xx yy zz

现在你理解了吗。。。 如果没关系,为什么程序中去掉 String args[] 会出现错误? --------之所以去掉会出错在于,不带 String args[] 的main函数和带 String args[] 的main函数,本质上已经不是同一个函数了,java 本身不存在不带 String args[] 的main函数,所以当然出错了。

Java怎么解析命令行参数

用惯了控制台的java程序之后,最印象深刻的是其的简单与快捷,虽没有图形界面那样吸引人的眼球,但却也足以迷倒众生。那么java命令行参数有哪些呢?跟gkstk小编一起来学习吧! 控制台程序的运行少不了要通过控制台来传递参数,譬如:

ls -la

这是shell脚本的常用命令,其就是通过后置参数来传递相关信息。UNIX环境为C语言中提供了 getopt() 这样的函数可以解析后置参数,这个函数是很实用很强大的,但 Java 就...(我 Google 了一下,倒没有怎么找出来)。大概是这个功能对 Java 来说太不足挂齿了吧,但总得有个解决方法才行。 下面就是一个代码实例,用以说明。 这个实例运行的结果是运行在控制台,并允许可选的输入参数:

java TestOpt -i 89 -b -s TestString

那么就会设置几个 parameter 的值:

public class TestOpt {
    public static void main(String[] args) {
        /* 这里先取默认值,因为不是所有参数都会被用户提供 */
        boolean parameter1 = false;
        int parameter2 = 0;
        String parameter3 = "";
        /* 设置一个offset变量,用来定位相关信息 */
        int optSetting = 0;
        for (; optSetting < args.length; optSetting++) {
            if ("-b".equals(args[optSetting])) {
                parameter1 = true;
            } else if ("-i".equals(args[optSetting])) {
                parameter2 = Integer.parseInt(args[++optSetting]);
            } else if ("-s".equals(args[optSetting])) {
                parameter3 = args[++optSetting];
            }
        }
        /* 这里我只是打印出来相关的设置信息,具体的行为肯定是要自己取定义 */
        System.out.println(parameter1);
        System.out.println(parameter2);
        System.out.println(parameter3);
    }
}

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