常用类与基础API复习

1.String类

  • String的声明:final修饰、实现了Comparable接口
  • String的不可变性
  • String的两种定义方式:
    • ①字面量的定义方式String s= “hello”;
      • String的内存解析:字符串常量池、堆内存的使用
    • ②new的方式:String s=new String(“hello”);
      • String s=new String(“hello”);在内存中创建的对象的个数
  • String的连接操作:+
    • 常量+常量、变量+常量、变量+变量、concat(String otherString)
    • String intern()
  • 熟悉String的构造器、与其他结构之间的转换、常用方法
    • 编码和解码:
      • 编码:字符、字符串 -->字节、字节数组。对应着编码集
      • 解码:字节、字节数组 --> 字符、字符串。对应着解码集
      • 规则:解码集必须使用当初编码时使用的编码集,只要不一致,就可能出现乱码
  • String相关的算法问题。

2.StringBuffer、StringBuilder类

  • 【面试题】String、StringBuffer、StringBuilder的区别
    • 三个类的对比:String、StringBuffer、StringBuilder

String:不可变的字符序列;底层使用char[] (jdk8之前),底层使用byte[] (jdk9及之后)
StringBuffer:可变的字符序列;JDk1.0声明,线程安全,效率低;底层使用char[] (jdk8之前),底层使用byte[] (jdk9及之后)
StringBuilder:可变的字符序列;JDk5.0声明,线程不安全,效率高;底层使用char[] (jdk8之前),底层使用byte[] (jdk9及之后)

  • 知道什么场景下使用StringBuffer、StringBuilder
    • 源码启示:

如果开发中需要频繁的针对于字符串进行增,删,改等操作,建议使用StringBuffer或StringBuilder替换String
因为使用String效率低
如果开发中,不涉及到线程安全问题,建议使用StringBuilder来替换StringBuffer,因为使用StringBuilder效率高
如果开发中大体确定要操作的字符的个数,建议使用带int capacity参数的构造器,因为可以避免底层多次扩容的操作,性能更高

3.jdk8之前的日期、时间API

  • System的currenTimeMillis()获取时间戳

获取当前时间对应的毫秒数,long类型的,时间戳
当前时间与1970年1月1日0时0分0秒之间的毫秒数
常用这个方法计算时间差

  • 两个Date的使用
  • 1—Java.util.Date
    用两个构造器
    两个方法的使用:①toSting() ②getTime
    2—Java.sql.Data:对应着数据库中的Data类型
  • SimpleDateFormat用于格式化、解析
格式化:日期--->字符串    解析:字符串--->日期
  • Calendar日历类的使用

Calendar类(日历类):抽象类
Calender:日历类
①实例化: 由于Calender是一个抽象类,所以我们要创建其子类的实例,这里我们通过Calender的静态方法
getInstance()即可获取
②常用方法:get(int field) / set(int field,xx) / add(int field,xx) / getTime() / setTime()

4.jdk8中新的日期、时间API

  • LocalDate、LocalTime、LocalDateTime–》类似于Calendar

实例化:now() / of(xxx,xxx,xxx)
方法:get() / withXxx() / plusXxx() / minusXxx() …

  • instant—》类似于Data

实例化:now() / ofEpochMilli()
方法:toEpochMilli()

  • DateTimeFormatter---->类似于SimpleDateFormat

用于格式化和解析LocalDate,LocalTime,LocalDateTime

5.比较器

  • 自然排序涉及到Comparable
    • compareTo(Object obj)
  • 定制排序涉及到Comparator
    • compare((Object obj1,(Object obj2)

其他API见其他文章有介绍,这里就不写了

了解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

死磕java的孤行者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值