String类
字符串常量池存放在方法区中. String类追根溯源最后都会变成对字符串常量池中字符串的引用.
String类是不可变的(final).
只有当两个数据均处于字符串常量池中时, 使用+连接操作得到的结果才位于字符串常量池, 否则会在堆空间中new新的对象.
Comparable表示自然排序, 例如第三方库中的类不方便修改其底层源代码, 但是那些类又没有实现Comparable接口, 而Comparator表示定制排序
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
public class Person {
private String name;
private int age;
private String id;
public Person(String name, int age, String id) {
this.name = name;
this.age = age;
this.id = id;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
", id='" + id + '\'' +
'}';
}
public static void main(String[] args) {
List<Person> arrayList = new ArrayList<>();
//使用lambda表达式实现Comparator接口, 更容易理解
Comparator<Person> comparator =
(p1, p2) -> {
if (p1.age == p2.age) {
return p1.name.compareTo(p2.name);
}
return Integer.compare(p2.age, p1.age);
};
arrayList.add(new Person("xiong", 24, "260424xxxx"));
arrayList.add(new Person("hello", 24, "260424xxxx"));
arrayList.add(new Person("hello", 25, "260424xxxx"));
arrayList.sort(comparator);
System.out.println("arrayList: " + arrayList);
}
}
编码和解码
格式化和解析