包装类

image.png

包装类的用途

  1. 作为和基本类型对应的类型存在,方便涉及到对象的操作。
  2. 包含每种基本数据类型的相关属性如最大值,最小值等,以及相关的操作方法。

自动装箱和拆箱

  1. 自动装箱
    1. 基本类型的数据处于需要对象的环境中时,会自动转化为“对象”。
    2. Integer i = 5 在自动装箱中就相当于 Integer i = Integer.valueOf(5) 这样的操作,这就是Java的自动装箱
  2. 自动拆箱
    1. 没有必要显式的调用intValue(),doubleValue()等转型方法。
    2. 如: Integer i = 5;int j = i; 这样的过程就是自动拆箱。
  3. 包装类的空指异常
    1. Integer i = null;int j = i.intValue(); 这样就会造成空指异常。
    2. 因为 i 并没有指向任何对象的实体,所以就不可能操作 intValue()方法。

包装类的缓存问题

  1. 如果数据在-128~127这个区间,那么在类加载时就已经为该区间的每个数值创建了对象,并将这256个对象存放到一个名为cache的数组中。每当自动装箱过程发生时(或者手动调用valueOf()时),就会先判断数据是否在该区间,如果在则直接获取数组中对应的包装类对象的引用,如果不在该区间,则会通过new调用包装类的构造方法来创建对象。
  2. IntegerCache类为Integer类的一个静态内部类,仅供Integer类使用。
  3. 一般情况下 IntegerCache.low为-128,IntegerCache.high为127,IntegerCache.cache为内部类的一个静态属性

String类

String

  1. String类对象代表不可变的字符序列,因此我们可以将对象称为“不可变对象”。
  2. String 类底层创建的数组是final的,也就是常量,只能被赋值一次。
  3. String类常用的方法:
    1. 创建返回对象:concat(),replace(),substring(),toLowerCase(),toUpperCase(),trim(),
    2. 提供查功能:endsWith(),startsWith(),indexOf(),lastIndexOf()
    3. 提供比较功能的方法:equals(),equalsIgnoreCase(),compareTo().
    4. 其他方法:charAt(),length().

StringBuffer和StringBuilder

  1. StringBuffer 线程安全,做线程同步检查,效率较低。
  2. StringBuilder 线程不安全,不做线程同步检查,效率高。
  3. 这俩的方法都是返回自己本身。
  4. append(…) 添加字符序列,仍然返回自身对象。
  5. delete(int start,int end) 删除从start开始到end-1为止的一段字符序列,仍然返回自身对象
  6. deleteCharAt(int index) 移除此序列指定位置上的 char,仍然返回自身对象
  7. insert(…) 在指定位置插入字符序列,仍然返回自身对象
  8. reverse() 用于将字符序列逆序,仍然返回自身对象。
  9. toString() 返回此序列中数据的字符串表示形式

时间类

JDK1.1之后,日期操作一般使用Calendar类,而字符串的转化使用DateFormat类。

DateFormat类和SimpleDateFormat类

image.png

  1. // 把时间对象按照"格式字符串指定的格式"转成相应的字符串
  2. DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
  3. // SimpleDateFormat是DateFormat的一个子类
  4. String str = df.format(new Date(40000000));
  5. System.out.println(str);
  6. // 把字符串按照“格式字符串指定格式”转成相应的时间对象
  7. DateFormat df2 = new SimpleDateFormat("yyyy年MM月DD日 hh时mm分ss秒");
  8. Date date = df2.parse("2020年04月07日 12时16分40秒");
  9. System.out.println(date);
  10. // 测试其他的格式字符。比如:利用D,获取本事件对象是所处年份的第几天。
  11. DateFormat df3 = new SimpleDateFormat("D");
  12. // SimpleDateFormat是DateFormat的一个子类
  13. String str3 = df3.format(new Date());
  14. System.out.println(str3);

Calendar日历类

GregorianCalendar 是 Calendar 的一个具体子类,提供了世界上大多数国家/地区使用的标准日历系统。

public static void printCalendar(Calendar c) {
    // 打印:1918年10月10日 11:23:45 周三
    int year = c.get(Calendar.YEAR);
    int month = c.get(Calendar.MONTH) + 1;
    int date = c.get(Calendar.DAY_OF_MONTH);
    int dayweek = c.get(Calendar.DAY_OF_WEEK) - 1;
    String datweek2 = dayweek==0?"日":dayweek+"";

    int hour = c.get(Calendar.HOUR);
    int minute = c.get(Calendar.MINUTE);
    int second = c.get(Calendar.SECOND);

    System.out.println(year + "年" + month + "月" + date + "日" + hour + "时" + minute + "分" + second + "秒" + " 周" + datweek2);
}

Math类

  1. abs 绝对值
  2. acos,asin,atan,cos,sin,tan 三角函数
  3. sqrt 平方根
  4. pow(double a, double b) a的b次幂
  5. max(double a, double b) 取大值
  6. min(double a, double b) 取小值
    1. ceil(double a) 大于a的最小整数
    2. floor(double a) 小于a的最大整数
  7. random() 返回 0.0 到 1.0 的随机数
  8. long round(double a) double型的数据a转换为long型(四舍五入)
  9. toDegrees(double angrad) 弧度->角度
  10. toRadians(double angdeg) 角度->弧度
  11. java.lang.Math提供类一系列静态方法用于科学计算。

File类

  1. java.io.File类:代表文件和目录。 在开发中,读取文件、生成文件、删除文件、修改文件的属性时经常会用到本类。

    File f = new File("d:/b.txt");
    f.renameTo(new File("D:/b.txt"));
    System.out.println("File是否存在:"+f.exists());
    System.out.println("File是否是目录:"+f.isDirectory());
    System.out.println("File是否是文件:"+f.isFile());
    System.out.println("File最后修改时间:"+new Date(f.lastModified()));
    System.out.println("File的大小:"+f.length());
    System.out.println("File的文件名:"+f.getName());
    System.out.println("File的目录路径:"+f.getPath());
    
  2. 关于文件操作的很多文件都在这个包中

枚举

  1. 格式: enum 枚举名 {枚举体(常量列表)}

    enumSeason {
    ``SPRING, SUMMER, AUTUMN, WINDER
    }
    
  2. 枚举实质上还是类!而每个被枚举的成员实质就是一个枚举类型的实例,他们默认都是public static final修饰的。可以直接通过枚举类型名使用它们。