`
wx1569488408
  • 浏览: 79260 次
文章分类
社区版块
存档分类
最新评论

从零开始读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

分享到:
评论

相关推荐

    selenium-java-2.47.1.zip

    这个压缩包 "selenium-java-2.47.1.zip" 包含了Selenium的Java版本,具体是2.47.1的更新,发布于2015年8月。这个版本在当时是一个稳定且广泛使用的版本,它提供了丰富的API,支持多种浏览器,并且可以与各种测试框架...

    基于java的开发源码-Spring4GWT.zip

    基于java的开发源码-Spring4GWT.zip 基于java的开发源码-Spring4GWT.zip 基于java的开发源码-Spring4GWT.zip 基于java的开发源码-Spring4GWT.zip 基于java的开发源码-Spring4GWT.zip 基于java的开发源码-Spring4GWT....

    java-7-openjdk-amd64.tar.gz

    但如果仅从“开源”字面意义(开放可阅读的源码)上看,其实Sun自JDK 1.5之后就开始以Java Research License(JRL)的形式公布过Java源码,主要用于研究人员阅读(JRL许可证的开放源码至JDK 1.6 Update 23为止)。...

    基于java的开发源码-EPUB类库 Epublib.zip

    基于java的开发源码-EPUB类库 Epublib.zip 基于java的开发源码-EPUB类库 Epublib.zip 基于java的开发源码-EPUB类库 Epublib.zip 基于java的开发源码-EPUB类库 Epublib.zip 基于java的开发源码-EPUB类库 Epublib.zip ...

    基于java的开发源码-OpenID服务器 JOIDS.zip

    基于java的开发源码-OpenID服务器 JOIDS.zip 基于java的开发源码-OpenID服务器 JOIDS.zip 基于java的开发源码-OpenID服务器 JOIDS.zip 基于java的开发源码-OpenID服务器 JOIDS.zip 基于java的开发源码-OpenID服务器 ...

    基于Java题库管理系统源码-毕设项目.zip

    基于Java题库管理系统源码-毕设项目.zip基于Java题库管理系统源码-毕设项目.zip基于Java题库管理系统源码-毕设项目.zip基于Java题库管理系统源码-毕设项目.zip基于Java题库管理系统源码-毕设项目.zip基于Java题库...

    基于java的开发源码-Decompiler反编译器.zip

    基于java的开发源码-Decompiler反编译器.zip 基于java的开发源码-Decompiler反编译器.zip 基于java的开发源码-Decompiler反编译器.zip 基于java的开发源码-Decompiler反编译器.zip 基于java的开发源码-Decompiler反...

    基于java的开发源码-Ajax框架 ZK.zip

    基于java的开发源码-Ajax框架 ZK.zip 基于java的开发源码-Ajax框架 ZK.zip 基于java的开发源码-Ajax框架 ZK.zip 基于java的开发源码-Ajax框架 ZK.zip 基于java的开发源码-Ajax框架 ZK.zip 基于java的开发源码-Ajax...

    基于java的开发源码-EasyCms框架.zip

    基于java的开发源码-EasyCms框架.zip 基于java的开发源码-EasyCms框架.zip 基于java的开发源码-EasyCms框架.zip 基于java的开发源码-EasyCms框架.zip 基于java的开发源码-EasyCms框架.zip 基于java的开发源码-...

    基于java的开发源码-进程通信.zip

    基于java的开发源码-进程通信.zip 基于java的开发源码-进程通信.zip 基于java的开发源码-进程通信.zip 基于java的开发源码-进程通信.zip 基于java的开发源码-进程通信.zip 基于java的开发源码-进程通信.zip 基于java...

    基于java的开发源码-HTTP服务器 TJWS.zip

    基于java的开发源码-HTTP服务器 TJWS.zip 基于java的开发源码-HTTP服务器 TJWS.zip 基于java的开发源码-HTTP服务器 TJWS.zip 基于java的开发源码-HTTP服务器 TJWS.zip 基于java的开发源码-HTTP服务器 TJWS.zip 基于...

    org.dtools.javaini-v1.1.00-src.7z

    《Java操作INI文件:org.dtools.javaini-v1.1.00源码解析》 在Java编程中,有时我们需要处理配置文件,其中INI文件是一种常见的格式,它以键值对的形式存储数据,通常用于存储软件的设置或配置信息。`org.dtools....

    基于java的开发源码-餐饮门户.zip

    基于java的开发源码-餐饮门户.zip 基于java的开发源码-餐饮门户.zip 基于java的开发源码-餐饮门户.zip 基于java的开发源码-餐饮门户.zip 基于java的开发源码-餐饮门户.zip 基于java的开发源码-餐饮门户.zip 基于java...

    基于java的开发源码-附加数据库.zip

    基于java的开发源码-附加数据库.zip 基于java的开发源码-附加数据库.zip 基于java的开发源码-附加数据库.zip 基于java的开发源码-附加数据库.zip 基于java的开发源码-附加数据库.zip 基于java的开发源码-附加数据库....

    Java项目源码-继承Monster.java

    Java项目源码-继承Monster.java

    基于Java开发的BS结构驾校培训管理系统源码-高分毕设.zip

    基于Java开发的BS结构驾校培训管理系统源码-高分毕设.zip基于Java开发的BS结构驾校培训管理系统源码-高分毕设.zip基于Java开发的BS结构驾校培训管理系统源码-高分毕设.zip基于Java开发的BS结构驾校培训管理系统源码-...

    基于java的开发源码-Java项目源码在线相册系统.zip

    基于java的开发源码-Java项目源码在线相册系统.zip 基于java的开发源码-Java项目源码在线相册系统.zip 基于java的开发源码-Java项目源码在线相册系统.zip 基于java的开发源码-Java项目源码在线相册系统.zip 基于java...

    java-uuid-generator-3.1.3.ja

    java-uuid-generator-3.1.3.jar 部分开源源代码用到这里面的类。

    基于java的开发源码-Java博客系统yijavaBlog.zip

    基于java的开发源码-Java博客系统yijavaBlog.zip 基于java的开发源码-Java博客系统yijavaBlog.zip 基于java的开发源码-Java博客系统yijavaBlog.zip 基于java的开发源码-Java博客系统yijavaBlog.zip 基于java的开发...

    基于java的开发源码-Java Socket通信实现.zip

    基于java的开发源码-Java Socket通信实现.zip 基于java的开发源码-Java Socket通信实现.zip 基于java的开发源码-Java Socket通信实现.zip 基于java的开发源码-Java Socket通信实现.zip 基于java的开发源码-Java ...

Global site tag (gtag.js) - Google Analytics