String类的理解

String类的声明如下:

public final class String implements 
    java.io.Serializab, Comparable<String>, CharSequence {

    private final char value[];

}

从修饰符可知:       final :表示String类无法被继承,无法被重写。

从实现类可知:

Serializab 序列化接口

 序列化是什么:序列化就将一个对象的状态(各个属性量)保存起来,然后在适当的时候再获得。

序列化分为两大部分:序列化和反序列化,序列化是这个过程的第一个部分,将数据分解成字节流,以便存储在文件中或者在网络上传输。反序列化就是打开字节流并重构对象,对象序列化不仅要将基本数据类型转换成字节表示,有时还要恢复数据,恢复数据要求有恢复数据的对象实例化的什么特点:如果某个类能够被序列化,其子类也可以被序列化,声明为static和transient类型的成员数据不能被序列化,因为static代表类的状态,transient代表对象的临时数据。

public interface Serializable(API 5.0)类通过实现 java.io.Serializable 接口以启用序列化功能,没有实现这个接口的类不能进行序列化和反序列化,可序列化类的所有子类型本身都是都是可序列化的,序列化接口没有方法或字段,仅用于标识可序列化的语义。

对象的序列化主要有两种用途:
1) 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中;

2) 在网络上传送对象的字节序列。
Java语言中要求只有实现了java.io.Serializable接口的类的对象才能被序列化及反序列化。JDK类库中的有些类(如String类、包装类(Java语言用包装类来把基本类型数据转换为对象,基本类型数据有四类八种)和Date类等)都实现了Serializable接口。
对象的序列化包括以下步骤。
1.创建一个对象输出流,它可以包装一个其他类型的输出流,比如文件输出流。   
2.通过对象输出流的writeObject()写对象。

对象的反序列化包括以下步骤。

1.创建一个对象输入流,它可以包装一个其他类型的输入流,比如文件输入流。
2.通过对象输入流的readObject()方法读取对象
其次在对象的序列化和反序列化过程当中,必须注意的事情是:为了能读出正确的数据,必须保证对象输出流的写对象的顺序与对象输入流读对象的顺序是一致的。

Comparable 比较器接口

若一个类实现了Comparable接口,就意味着该类支持排序。实现了 Comparable接口的类的对象的列表或数组可以通过Collections.sort或Arrays.sort进行自动排序。
此外,实现此接口的对象可以用作有序映射中的键或有序集合中的集合,无需指定比较器。
此接口只有一个方法compare,比较此对象与指定对象的顺序,如果该对象小于、等于或大于指定 对象,则分别返回负整数、零或正整数

若一个类要实现Comparator接口:它一定要实现compareTo(T o1, T o2) 函数,但可以不实现 equals(Object obj) 函数。
为什么可以不实现 equals(Object obj) 函数呢? 因为任何类,默认都是已经实现了equals(Object obj)的。 Java中的一切类都是继承于java.lang.Object,在Object.java中实现了equals(Object obj)函数;所以,其它所有的类也相当于都实现了该函数。

CharSequence

CharSequence是一个可读的char值序列。

CharSequence类和String类都可以定义字符串,但是String定义的字符串只能读,CharSequence定义的字符串是可读可写的; 对于抽象类或者接口来说不可以直接使用new的方式创建对象,但是可以直接给它赋值。

CharSequence charS = "text";
CharSequence test = new CharSequence();//报错

综上所述:

String 类是一个 final 类,代表不可变的字符序列,不能被其他的类继承。
String类对象是不可变的,指的是一个String 类对象一但被创建,该对象的内容就不可以再改变(例如:属性 value );但对象的引用(对象名)可以改变,也就是说对象名可以再指向另外的对象。

String 类实现了接口 Serializable【说明了 String 类对象可以串行化:可以在网络传输】;String 类还实现了接口 Comparable [说明了String 对象可以比较大小]。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值