Java学习10 控制台应用程序设计

来源:互联网 发布:cs软件界面设计工具 编辑:程序博客网 时间:2024/05/17 21:44

命令行参数

执行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 Deprecatedpublic @interface Overridepublic @interface SuppressWarnings

    参考:Java注释@interface的用法【转】

    • 元注解@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下,即可引用

    • 参考:classpath、path、JAVA_HOME的作用及JAVA环境变量配置
    • JDK1.5以后,引用jre自带的类库,不再需要配置CLASSPATH
    • JDK所有java类,可在安装目录下/jre/lib/rt.jar找到
原创粉丝点击