1. String类的定义
public final class String
implements java.io.Serializable, Comparable<String>, CharSequence
可以看到String类被final修饰,因此不能被继承。String类还实现了序列化接口Serializable、可比较的接口Comparable并指定范型为String,该接口必须要实现int compareTo(T o) 方法。最后还实现了字符序列CharSequence接口。如下图所示:
(1)Serializable接口:
什么是序列化?
将对象的状态信息转换为可以存储或传输的形式的过程,在序列化期间,对象将其当前状态写入到临时存储区或持久性存储区,之后,便可以通过从存储区中读取或反序列化对象的状态信息,来重新创建该对象
什么情况下需要序列化?
a)当你想把的内存中的对象状态保存到一个文件中或者数据库中,以便可以在以后重新创建精确的副本;
b)当你想用套接字在网络上传送对象的时候(从一个应用程序域发送到另一个应用程序域中);
c)当你想通过RMI传输对象的时候;
(2)Comparable接口
此接口强行对实现它的每个类的对象进行整体排序。此排序被称为该类的自然排序 ,类的 compareTo方法被称为它的自然比较方法 。实现此接口的对象列表(和数组)可以通过 Collections.sort(和 Arrays.sort )进行自动排序。实现此接口的对象可以用作有序映射表中的键或有序集合中的元素,无需指定比较器。
需要实现的方法:int compareTo(T o)
比较此对象与指定对象的顺序。如果该对象小于、等于或大于指定对象,则分别返回负整数、零或正整数。
PS:Java中实现对象的比较方法有两种:Comparable接口和Comparator接口
与上面的Comparable接口不同的是:
①、Comparator位于包java.util下,而Comparable位于包java.lang下。
②、Comparable接口将比较代码嵌入需要进行比较的类的自身代码中,而Comparator接口在一个独立的类中实现比较。
③、如果前期类的设计没有考虑到类的Compare问题而没有实现Comparable接口,后期可以通过Comparator接口来实现比较算法进行排序,并且为了使用不同的排序标准做准备,比如:升序、降序。
④、Comparable接口强制进行自然排序,而Comparator接口不强制进行自然排序,可以指定排序顺序。
(3)CharSequence接口
是一个字符 char 序列,实现了该接口的类:CharBuffer,String,StringBuffer(线程安全),StringBuilder(线程不安全)
方法:
charAt(int index),返回指定索引处的字符
toString(), 返回一个包含此序列中字符的字符串,该字符串与此序列的顺序相同。字符串的长度就是此序列的长度。
length(), 返回该字符序列的长度
subSequence(), 返回一个新的charsequence子序列