字符串相关类:String
1.String声明为final,不可被继承。
2.实现了Serializable接口:表示字符串是支持序列化的;
实现了Comparable接口:表示String是可以比较大小的;
3.String内部定义了final char[] value[]用于存储字符串数据;
4.String代表不可变的字符序列。
当对字符串重新赋值;
对现有字符串进行连接操作;
当调用replace()修改指定字符或字符串时;
都会重新指定内存区域进行赋值。
5.通过字面量的方式给一个字符串赋值,此时字符串的值声明在字符串常量池中。
6.字符串常量池是不会存储相同内容的字符串的。
在jdk1.6之前,字符串常量池在JVM的方法区(永久代)中,jdk1.7之后移到了堆中,jdk1.8去除永久代,改为元空间。
String实例化的两种方式:
1 | // String实例化方式一:字面量赋值 |
内存解析:
intern 方法是一个native方法,intern方法会从字符串常量池中查询当前字符串是否存在,如果存在,就直接返回当前字符串;如果不存在,则会在常量池中创建并返回堆中的对象引用。
String常用方法
1 | public class StringMethodTest { |
String 与char[]转换
1 | public void test1(){ |
String与byte[] 转换
1 | public void test2() throws UnsupportedEncodingException { |
StringBuffer 与 StringBuilder
String:不可变的字符序列
StringBuffer:可变的字符序列;线程安全,效率低
StringBuilder:可变的字符系列;线程不安全,效率高
底层都是使用char[]存储
StringBuffer(StringBuilder)常用方法:
1 | public void test1(){ |
日期时间API
Date类
1 | // System类中的currentTimeMillis() |
SimpleDateFormat类
1 |
|
比较器
自然排序:java.lang.Comparable
需要进行比较的类需要实现Comparable
接口中的toCompare()
方法,在实现Comperable
接口时可使用该类作为泛型限定,在编译期间即可发现传入参数是否为需要进行比较的实体对象。
1 | // 按照年龄排序 |
定制排序:java.util.Comparator
需要重写Comparator
类中的compare()
方法
1 | Comparator comparator = new Comparator() { |
枚举类
1 | public class EnumTest1 { |