字符串和编码

  • Java字符串String是不可变对象;
  • 字符串操作不改变原字符串内容,而是返回新字符串;
  • 常用的字符串操作:提取子串、查找、替换、大小写转换等;
  • Java使用Unicode编码表示String和char;
  • 转换编码就是将String和byte[]转换,需要指定编码;
  • 转换为byte[]时,始终优先考虑UTF-8编码

    StringBuilder

  • StringBuilder是可变对象,用来高效拼接字符串;

  • StringBuilder可以支持链式操作,实现链式操作的关键是返回实例本身;
  • StringBuffer是StringBuilder的线程安全版本,现在很少使用。

    StringJoiner

  • 用指定分隔符拼接字符串数组时,使用StringJoiner或者String.join()更方便;

  • 用StringJoiner拼接字符串时,还可以额外附加一个“开头”和“结尾”。

    包装类型

  • Java核心库提供的包装类型可以把基本类型包装为class;

  • 自动装箱和自动拆箱都是在编译期完成的(JDK>=1.5);
  • 装箱和拆箱会影响执行效率,且拆箱时可能发生NullPointerException;
  • 包装类型的比较必须使用equals();
  • 整数和浮点数的包装类型都继承自Number;
  • 包装类型提供了大量实用方法。

    javaBean

    JavaBean是一种符合命名规范的class,它通过getter和setter来定义属性;
    属性是一种通用的叫法,并非Java语法规定;
    可以利用IDE快速生成getter和setter;
    使用Introspector.getBeanInfo()可以获取属性列表。

    枚举类

    Java使用enum定义枚举类型,它被编译器编译为final class Xxx extends Enum { … };
    通过name()获取常量定义的字符串,注意不要使用toString();
    通过ordinal()返回常量定义的顺序(无实质意义);
    可以为enum编写构造方法、字段和方法
    enum的构造方法要声明为private,字段强烈建议声明为final;
    enum适合用在switch语句中。