Java常用类笔记

2021-10-02  本文已影响0人  zqyadam

字符串相关的类

String类及常用方法

String的特性

常用API

String与基本数据类型转换

字符串-->基本数据类型、包装类

基本数据类型、包装类-->字符串

String与字符数组转换

字符数组-->字符串

字符串-->字符数组

String与字节数组转换

字节数组-->字符串

字符串-->字节数组

编码:字符串-->字节(看得懂-->看不懂的二进制数据)

解码:编码的逆过程,字节-->字符串(看不懂的二进制数据-->看得懂)

说明:解码时,要求解码使用的字符集必须与编码时使用的字符集一致,否则会出现乱码。

StringBuffer、StringBuilder类

对比String、StringBuffer、StringBuilder

String:不可变字符序列,底层使用char[]存储。

StringBuffer:可变字符序列、效率低、线程安全,底层使用char[]存储

StringBuilder(JDK 5.0):可变字符序列、效率高、线程不安全,底层使用char[]存储

注意:作为参数传递的话,方法内部String不会改变其值,StringBuffer和StringBuilder会改变其值。

执行效率:StringBuilder > StringBuffer > String

StringBuffer类的常用方法(StringBuilder与StringBuffer常用方法类似)

日期时间API(JDK8之前)

基本关系

java.lang.System类

System类提供的public static long currentTimeMillis()用来返回当前时间与1970年1月1日0时0分0秒之间以毫秒为单位的时间差。

java.util.Date类

表示特定的瞬间,精确到毫秒

java.text.SimpleDateFormat类

作用:对日期Date类的格式化和解析

两个操作:

  1. 格式化:日期-->字符串

    • SimpleDateFormat() :默认的模式和语言环境创建对象
    • public SimpleDateFormat(String pattern) :该构造方法可以用参数pattern指定的格式创建一个对象。
    • public String format(Date date) :格式化时间对象date
    SimpleDateFormat sdf = new SimpleDateFormat();
    Date date = new Date();
    System.out.println(date);
    System.out.println(sdf.format(date));
    

    输出:

    Thu Apr 08 20:26:57 CST 2021
    21-4-8 下午8:26
    

    指定输出格式:yyyy-MM-dd hh:mm:ss

    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
    Date date = new Date();
    System.out.println(dateFormat.format(date));
    

    输出:

    2021-04-08 08:36:42
    
  1. 解析:字符串-->日期

    要求字符串必须是符合SimpleDateFormat识别的格式(通过构造器参数体现),否则抛异常

    默认构造器格式

    String str = "2021-4-8 上午11:40";
    SimpleDateFormat format = new SimpleDateFormat();
    try {
      System.out.println(format.parse(str));
    } catch (ParseException e) {
      e.printStackTrace();
    }
    

    指定格式的构造器

    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
    try {
      System.out.println(dateFormat.parse("2021-04-08 08:35:49"));
    } catch (ParseException e) {
      e.printStackTrace();
    }
    

可以使用的格式:

java.util.Calendar(日历)类

Calendar是一个抽象基类,主用用于完成日期字段之间相互操作的功能。

获取Calendar实例的方法

常用方法:

  1. public void set(int field,int value)

    Calendar calendar = Calendar.getInstance();
    calendar.get(Calendar.DAY_OF_YEAR)
    
  2. public int get(int field)

    Calendar calendar = Calendar.getInstance();
    calendar.set(Calendar.DAY_OF_YEAR,1);
    
  3. public void add(int field,int amount)

    Calendar calendar = Calendar.getInstance();
    calendar.add(Calendar.DAY_OF_YEAR, 10);
    
  4. public final Date getTime()

    Calendar calendar = Calendar.getInstance();
    calendar.getTime()
    
  5. public final void setTime(Date date)

    Calendar calendar = Calendar.getInstance();
    Date date = new Date();
    calendar.setTime(date)
    

注意:

JDK8中新日期时间API

1.LocalDate 、LocalTime 、LocalDateTime

LocalDate、LocalTime、LocalDateTime 类是其中较重要的几个类,它们的实例是不可变的对象,分别表示使用 ISO-8601日历系统的日期时间、日期和时间。它们提供了简单的本地日期或时间,并不包含当前的时间信息,也不包含与时区相关的信息。

注:ISO-8601日历系统是国际标准化组织制定的现代公民的日期和时间的表示法,也就是公历。

常用方法:

2. 瞬时:Instant

常用方法:

3. java.time.format.DateTimeFormatter类

该类提供了三种格式化方法:

Java比较器

在Java中经常会涉及到对象数组的排序问题,那么就涉及到对象之间的比较问题。

ava实现对象排序的方式有两种:

自然排序:Comparable接口

例:

自定义的类,实现Comparable接口:

class Goods implements Comparable {
  private String name;
  private double price;
  //按照价格,比较商品的大小
  @Override
  public int compareTo(Object o) {
    if(o instanceof Goods) {
      Goods other = (Goods) o;
      if (this.price > other.price) {
        return 1;
      } else if (this.price < other.price) {
        return -1;
      }
      return 0;
    }
    throw new RuntimeException("输入的数据类型不一致");
  }
  //构造器、getter、setter、toString()方法略
}

对自定义的类进行排序,依据价格进行降序排列:

Goods[] all = new Goods[4];
all[0] = new Goods("《红楼梦》", 100);
all[1] = new Goods("《西游记》", 80);
all[2] = new Goods("《三国演义》", 140);
all[3] = new Goods("《水浒传》", 120);
Arrays.sort(all);
System.out.println(Arrays.toString(all));

定制排序:java.util.Comparator接口

例:参考Comparable接口中的Goods类,取消对Comparable接口的实现:

class Goods implements Comparable {
  private String name;
  private double price;
  //构造器、getter、setter、toString()方法略
}

在调用Arrays.sort()方法时,传入一个Comparator接口的匿名实现类,实现按价格的降序排序

Goods[] all = new Goods[4];

all[0] = new Goods("《红楼梦》", 100);
all[1] = new Goods("《西游记》", 80);
all[2] = new Goods("《三国演义》", 140);
all[3] = new Goods("《水浒传》", 120);

// 这里创建一个Comparator接口的匿名实现类,用来进行比较价格
Arrays.sort(all, new Comparator<Goods>() {
  @Override
  public int compare(Goods o1, Goods o2) {
    if (o1.getPrice() == o2.getPrice()) {
      return 0;
    } else if (o1.getPrice() < o2.getPrice()) {
      return 1;
    } else {
      return -1;
    }
  }
});

System.out.println(Arrays.toString(all));

Comparable接口与Comparator接口对比:

System类

例:

String javaVersion = System.getProperty("java.version");
System.out.println("java的version:" + javaVersion);

String javaHome = System.getProperty("java.home");
System.out.println("java的home:" + javaHome);

String osName = System.getProperty("os.name");
System.out.println("os的name:" + osName);

String osVersion = System.getProperty("os.version");
System.out.println("os的version:" + osVersion);

String userName = System.getProperty("user.name");
System.out.println("user的name:" + userName);

String userHome = System.getProperty("user.home");
System.out.println("user的home:" + userHome);

String userDir = System.getProperty("user.dir");
System.out.println("user的dir:" + userDir);

Math类

java.lang.Math提供了一系列静态方法用于科学计算。其方法的参数和返回值类型一般为double型。

BigInteger与BigDecimal

BigInteger类

常用方法

BigDecimal类

常用方法

例:

public void testBigInteger() {
  BigInteger bi = new BigInteger("12433241123");
  BigDecimal bd = new BigDecimal("12435.351");
  BigDecimal bd2 = new BigDecimal("11");
  System.out.println(bi);
  // System.out.println(bd.divide(bd2));
  System.out.println(bd.divide(bd2, BigDecimal.ROUND_HALF_UP));
  System.out.println(bd.divide(bd2, 15, BigDecimal.ROUND_HALF_UP));
}
上一篇下一篇

猜你喜欢

热点阅读