从零开始读JAVA源码03-java.lang.String

public final class String extends Object

implements Serializable, Comparable<String>, CharSequence。

         今天写一下 String类的 实现

     从源码中可以看到 String 类实现了2个接口 分别是Serializable、Comparable<String>、CharSequence。

        Serializable 序列化接口:

        简单说就是序列化为了保存在内存中的各种对象的状态(也就是实例变量,不是方法),并且可以把保存的对象状态再读出来。虽然你可以用你自己的各种各样的方法来保存object states,但是Java给你提供一种应该比你自己好的保存对象状态的机制,那就是序列化。实现了序列化接口,String对象可以最优存储。

      所谓的Serializable,就是java提供的通用数据保存和读取的接口。至于从什么地方读出来和保存到哪里
去都被隐藏在函数参数的背后了。这样子,任何类型只要实现了Serializable接口,就可以被保存到文件中,或者作为数据流通过网络发送到别的地方。也可以用管道来传输到系统的其他程序中。这样子极大的简化了类的设计。只要设计一个保存一个读取功能就能解决上面说得所有问题。

    String 实现序列化接口,可以是创建的String对象满足以下规则,

            a)当你想把的内存中的对象状态保存到一个文件中或者数据库中时候,在传递,和保存对象(object)的时候,保证对象的完整性和可传递性
            b)当你想用套接字(connect连接,HTTPClient等)在网络上传送对象的时候;(源IP地址和目的IP地址以及源端口号和目的端口号的组合称为套接字。常用的TCP/IP协议的3种套接字类型:流套接字(SOCK_STREAM)(基于TCP协议)、数据报套接字(SOCK_DGRAM)(基于UDP协议)、原始套接字(SOCK_RAW)(IP、 ICMP等))
            c)当你想通过RMI(远端方法调用)传输对象的时候(RMI可以通过JNI(java native interface)连接到已有系统,它也可以通过JDBC来连接到传统的关系数据库,RMI/JNI和RMI/JDBC的结合使得你可以用RMI和已有的非java服务进行交互,同时当你扩展你的服务时,它能使你拥有java所有的优越性。);

       关于序列化算法

 序列化算法一般会按步骤做如下事情:

◆ 将对象实例 相关的类 元数据输出(元数据是指用来描述数据的数据,更通俗一点,就是描述代码间关系,或者代码与其他资源(例如数据库表)之间内在联系的数据,简单的理解成,最小的数据单位。元数据可以为数据说明其元素或属性(名称、大小、数据类型、等),或其结构(长度、字段、数据列),或其相关数据(位于何处、如何联系、拥有者)例如:struts-config.xml,元数据还以用于网络搜索图片. 基于元数据的广泛应用,JDK5.0引入了Annotation的概念来描述元数据。在java中,元数据以标签的形式存在于java代码中,元数据标签的存在并不影响程序代码的编译和执行。(从配置文件到注解,从))。

◆ 递归地输出类的超类描述直到不再有超类。

◆ 类元数据完了以后,开始从最顶层的超类开始输出对象实例的实际数据值。

◆ 从上至下递归输出实例的数据

       未完待续..........

转载于:https://my.oschina.net/u/3707187/blog/1573284

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值