—— Java 命令行参数
—— 关于其中的args以及public static / static public
Java 命令行参数
前面已经看到多个使用Java数组的示例,每一个Java应用程序都有一个带String arg[]参数的main方法,这个参数表明main方法将接收一个字符串数组,也就是命令行参数。
例如,看一看下面这个程序:
------------------------------------------------------------------------------------------------------------------------------------------------------------
public class Message{------------------------------------------------------------------------------------------------------------------------------------------------------------
public static void main(String[] args){
if(args[0].equals("-h"))
System.out.print("Hello,");
else if(args[0].equals("-g"))
System.out.print("Goodbye,");
//print the other command-line arguments
for(int i=1;i<args.length;i++)
System.out.print(" "+args[i]);
System.out.println("!");
}
}
如果使用下面这个形式运行这个程序:
java Message -g cruel world
args数组将包含下列内容:
args[0]: "-g"
args[1]: "cruel"
args[2]: "world"
这个程序将显示下列信息:
Goodbye, cruel world!
C++注释:在Java应用程序的main方法中,程序名并没有存储在args数组中。例如当使用下列命令运行程序时
java Message -h world
args[0]是"-h",而不是"Message"或"java"。
声明:以上部分系《Java核心技术》(中文版第八版)第三章第十节数组的"命令行参数"文中段落
===========================================================================================================================
关于其中的args以及public static / static public
args参数可以写成任意形式,而不影响.class文件大小(它只是个形式参数) 但不提倡这样做 以下方式同样是不提倡的 但我们需要了解这些基本的内容
我们也可以在主方法中这样写:static public void main
举个例子 我说一个小伙子很高很帅和说一个小伙子很帅很高是没有区别的(数学上来说 = =)。 static public 这些都是Java当中的修饰符,修饰符等价于汉语当中的形容词
我们来看看底层是如何实现的(src/java/lang/reflect/Modifier.java):
------------------------------------------------------------------------------------------------------------------------------------------------------------/**------------------------------------------------------------------------------------------------------------------------------------------------------------
* The {@code int} value representing the {@code public}
* modifier.
*/
public static final int PUBLIC = 0x00000001;
/**
* The {@code int} value representing the {@code static}
* modifier.
*/
public static final int STATIC = 0x00000008;
Java当中的修饰符在底层实现的时候,采用的是一些整数值数值来实现,public采用的是整数1,static采用的是整数8,而主方法要求修饰符部分必须包含9,它不关心这个9是1+8得出来的,还是8+1得出来的
【一些提醒而已:在Java当中char类型数据采用16个位即两个字节存储(一个英文占一个字节,一个中文占两个字节?这样过于纯粹的定义显然是不恰当的。事实上这还有个编码的问题。我们可以尝试在windows系统中把一个空的txt文件以Unicode编码存储,查看属性可以看到它已经包含了两个字节)】
声明:以上部分参考自 http://u.youku.com/5_vvvvv