命令行参数

执行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个值:
  1. CLASS
    注解的信息被保留在class文件(字节码文件)中当程序编译时,但不会被虚拟机读取在运行的时候
  2. RUNTIME
    注解的信息会被编译器抛弃,不会留在class文件中,注解的信息只会留在源文件中
  3. SOURCE
    注解的信息被保留在class文件(字节码文件)中当程序编译时,会被虚拟机保留在运行时
  • java.lang.Override注解
  • 指明被注解的方法重写了父类中的方法,如果不是合法的方法重写则编译报错
  • java.lang.Deprecated注解
  • 过时API
  • java.lang.SuppressWarnings注解
  • 关闭编译器对指定的一种或多种问题的提示/警告
//关闭过时提醒
@SuppressWarnings(value={"deprecation"})
//其他写法
@SuppressWarnings(value={"deprecation","unchecked"})
@SuppressWarnings("deprecation")
@SuppressWarnings("deprecation","unchecked")

可关闭警告关键字:Excluding warnings using @SuppressWarnings

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找到