本文目录一览:
java命令行参数是什么意思
这个名词我们可以分开来看: “命令行”就是:DOC命令行”了,也就是那个黑色的框框。 “参数”就是程序里面所需要的“参数”了。 合起来“命令行参数”就是“在DOC下输入的程序所需的参数”。
请详细写出Javac和Java两个命令的使用方式
javac 和 java 两个命令的使用详解:
一、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批处理程序的语法自己百度一下,不难。
- 开头
linux有很多不同的shell,通常使用bash(bourne again shell),程序必须以下面的行开始:
#!/bin/sh
#!
用来告诉系统用后面的参数来执行程序,这里使用的是/bin/sh
要使你的脚本能够执行,还必须让这个文件有可执行权限,使用下面命令更改文件权限:chmod +x filename
- 注释
以
#
开始的句子表示注释,一直到这行结束,多写注释有利于以后重新看的时候知道自己在做什么
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);
}
}
这种类似的方法估计应该有很多吧,但这个应该算是比较轻量级的。当然若参数非常多(同时也得进行验证输入)