命令行参数
执行java程序时:
java <类名> [<命令行参数>]*
注意:
1. 参数须使用空格符及双引号分隔,作为实参传给main()
2. 双引号作为参数值,用两个双引号转义""
Example:
java TestCmdLineArgs Tom Kitty "Mr Brown"
系统属性
-
Key-Value
形式,记录当前操作系统和JVM等相关的环境信息 - System.getProperties():获取所有可用的系统属性
- System或Properties类的getProperty(String):获取系统属性
- System或Properties类的setProperty(String, String):添加系统属性
D:>java -Dkkk=vvv TestSystemProperties
- 应用场景不多,如:JDBC系统属性加载某种数据库驱动;使用系统属性指定邮件收发代理服务器的IP地址和端口号
这里写代码片
标准输入输出/标准IO
- 控制台输入输出
- System.out,标准输出,java.io.PrintStream类型
- System.in,标准输入,java.io.InputStream类型
- System.err,标准错误输出,java.io.PrintStream类型
- PrintStream类
- print()
- println()
- printf():提供数据格式化输出功能
- 读取输入的传统方法:
System.in,以字节为单位读入字节流;InputStreamReader以字符为单位,多次调用System.in读入;BufferReader提供readLine()方法读取对应数据源组成字符串返回
这里写代码片
文件输入输出/文件IO
- File类
- 创建File对象
这里写代码片
- 提供了目录管理的功能
- File类的主要方法:
操作 | 主要方法 |
关于文件/目录名操作 | String getName() String getPath() String getAbsolutePath() String getParent() |
测试操作 | |
获取常规文件信息操作 | |
设置和修改操作 | boolean delete() void deleteOnExit():临时文件,jvm关闭自动删除 |
目录操作 |
- “读”操作相关类:
类名 | 说明 |
java.io.FileInputStream | 以字节为单位 |
java.io.InputStreamReader | |
java.io.FileReader | 以字符为单位读取,InputStreamReader的子类 |
java.io.BufferedReader |
- “写”操作相关类:
类名 | 说明 |
java.io.FileOutputStream | 以字节为单位 |
java.io.OutputStreamWriter | |
java.io.FileWriter | OutputStreamWriter的子类 |
java.io.BufferedWriter | |
java.io.PrintWriter | 以字符为单位,支持汉字 |
可变参数
- 定义方法时,可指定使用任意数量的参数。用法:参数类型加
...
- 可变长度参数必须放在参数列表的最后,而且一个方法最多只能包含一个可变长度参数
- java中使用一维数组来处理可变参数的,所以可变参数可以通过
length
获取可变参数个数
这里写代码片
过时API
- 过时API存在替代物
- 移植Java代码时,可使用
-Xlint:deprecation
选项进行编译,以获取相关过时说明信息javac -Xlint:deprecation TestDeprecation.java
- 用户自定义过时API
- 加入注释
@deprecated
这里写代码片
注解(Annotation)
- java语言采用了一类新的数据类型来描述注解——注解类型相当于类或接口,每一条注解相当于该类的一个实例。注解类型采用
@interface
标记来声明:
public @interface Deprecated
public @interface Override
public @interface SuppressWarnings
- 元注解@Retention
Rentention 搭配 RententionPolicy使用;通过反射的方式读取。RetentionPolicy有3个值:
-
CLASS
注解的信息被保留在class文件(字节码文件)中当程序编译时,但不会被虚拟机读取在运行的时候 -
RUNTIME
注解的信息会被编译器抛弃,不会留在class文件中,注解的信息只会留在源文件中 -
SOURCE
注解的信息被保留在class文件(字节码文件)中当程序编译时,会被虚拟机保留在运行时
- java.lang.Override注解
- 指明被注解的方法重写了父类中的方法,如果不是合法的方法重写则编译报错
- java.lang.Deprecated注解
- 过时API
- java.lang.SuppressWarnings注解
- 关闭编译器对指定的一种或多种问题的提示/警告
//关闭过时提醒
@SuppressWarnings(value={"deprecation"})
//其他写法
@SuppressWarnings(value={"deprecation","unchecked"})
@SuppressWarnings("deprecation")
@SuppressWarnings("deprecation","unchecked")
Java归档工具
- 将多个文件或目录合并/压缩为单个java归档文件(jar, java archive)
- jar主要作用:
- 发布和使用类库
- 作为程序组件或者插件程序的基本部署单位
- 打包与组件相关联的资源文件
- 语法:
jar {ctxui}[vfmn0PMe] [jar-file] [manifest-file] [entry-point] [-C dir] files ...
常用参数: -C
:更改为指定的目录并包含以下文件 -v
:在标准输出中生成详细输出
示例 1: 将两个类文件归档到一个名为 classes.jar 的档案中: jar cvf classes.jar Foo.class Bar.class
示例 2: 使用现有的清单文件'mymanifest'
并将foo/
目录中的所有文件归档到'classes.jar'
中: jar cvfm classes.jar mymanifest -C foo/
- 将jar路径添加到系统变量
CLASSPATH
下,即可引用
- JDK1.5以后,引用jre自带的类库,不再需要配置
CLASSPATH
- JDK所有java类,可在安装目录下
/jre/lib/rt.jar
找到