7.1 与用户互动
    使用scanner获取键盘输入
    java.util.Scanner
    一个可以使用正则表达式来解析基本类型和字符串的简单文本扫描器。
    7.2 系统相关
    java.lang.System
    System类 代表当前Java程序的运行平台
    不能被实例化
    gc() 通知系统进行垃圾回收
    runFinalization() 通知系统进行资源清理
    static PrintStream err
    static InputStream in
    static PrintStream out
    identityHashCode可以唯一标示一个对象,因为这个值时根据对象的地址值计算得到的
    java.lang.Runtime
    RunTime类 代表Java程序的运行时环境
    Process exec(String command)
    7.3常见类
    1Object类
    int hashCode()
    protected void finalize()
    Object 类的 toString 方法返回一个字符串,该字符串由类名(对象是该类的一个实例)、at 标记符“@”和此对象哈希码的无符号十六进制表示组成。换句话说,该方法返回一个字符串,它的值等于:
    getClass().getName() + ‘@’ + Integer.toHexString(hashCode())
    clone()
    2Objects类 (Java7)
    Java给工具类命名的习惯是,添加一个字母s
    3 String StringBuffer StringBuilder
    String 不可变
    StringBuffer 线程安全的可变字符序列
    StringBuilder 线程不安全的可变字符序列,性能高、
    boolean equals(Object anObject)
    String类是不可变的,所以会额外产生很多临时变量
    StringBuffer和StringBuilder用法完全一样,唯一区别是,前者线程安全,后者线程不安全
    4 Math类
    构造函数式private的,无法实例化。
    里面的方法都是静态的
    5 Java7的ThreadLocalRandom和Random
    Random类专门用于生成一个伪随机数,一个构造器使用默认的种子(当前时间),另一个构造器需要显示传入long型整数种子。
    ThreadLocalRandom是Random的增强版,在并发环境下,使用ThreadLocalRandom来代替Random可以减少多线程资源竞争,保证更好的线程安全性
    Random产生的是伪随机数,相同的种子,会产生相同的随机数,推荐使用当前时间作为Random对象的种子
    6、BigDecimal类
    BigDecimal用于避免精度丢失
    java.math.BigDecimal
    double float 容易产生精度丢失
    public BigDecimal(double val) 不建议用这种方法
    建议使用这个 静态方法 static BigDecimal valueOf(double val)
    因为:
    public BigDecimal(double val)
    将 double 转换为 BigDecimal,后者是 double 的二进制浮点值准确的十进制表示形式。返回的 BigDecimal 的标度是使 (10scale × val) 为整数的最小值。
    注:
    此构造方法的结果有一定的不可预知性。
    另一方面,String 构造方法是完全可预知的:写入 new BigDecimal(“0.1”) 将创建一个 BigDecimal,它正好 等于预期的 0.1。
    因此,比较而言,通常建议优先使用 基于String的构造方法
    写一个Arith工具类
    7.4 Java的日期、时间类 P257
    java.util.Date 一个设计相当糟糕的类
    java.util.Calendar
    Java8新增的日期、时间包
    java.time
    7.5正则表达式
    java.util.regex.Pattern 正则表达式的编译表示形式
    java.util.regex.Matcher
    CharSequence 接口 ,String StringBuffer StringBuilder 都是该接口的实现类
    String 类也有几个方法,支持正则表达式
    boolean matches(String regex)
    String replaceAll(String regex, String replacement)
    String replaceFirst(String regex, String replacement)
    String[] split(String regex)
    7.6 国际化和格式化
    国际化I18N:为了提供更适应、更友好的用户界面
    本土化L10N
    国际化主要通过这三个包实现:
    java.util.ResourceBundle
    java.util.Locale
    java.text.MessageFormat
    java.text.NumberFormat
    java.text.DateFormat
    java.text.SimpleDateFormat 使用更简单,功能却更强大
    SimpleDateFormat 是一个以与语言环境有关的方式来格式化和解析日期的具体类。它允许进行格式化(日期 -> 文本)、解析(文本 -> 日期)和规范化。
    7.7 Java8新增的日期、时间格式器
    资源文件 里面是是很多Key-Value对