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

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

 
阅读更多
public final class String extends Object

implements Serializable, Comparable<String>, CharSequence。

关于String类的实现Object 类    

      String 类 实现 Object 超类。

      Object 类的实现的方法 :

 

protected  Object clone()
          创建并返回此对象的一个副本。
 boolean equals(Object obj)
          指示其他某个对象是否与此对象“相等”。
protected  void finalize()
          当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。
 Class<?> getClass()
          返回此 Object 的运行时类。
 int hashCode()
          返回该对象的哈希码值。
 void notify()
          唤醒在此对象监视器上等待的单个线程。
 void notifyAll()
          唤醒在此对象监视器上等待的所有线程。
 String toString()
          返回该对象的字符串表示。
 void wait()
          在其他线程调用此对象的 notify() 方法或 notifyAll() 方法前,导致当前线程等待。
 void wait(long timeout)
          在其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者超过指定的时间量前,导致当前线程等待。
 void wait(long timeout, int nanos)
          在其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者其他某个线程中断当前线程,或者已超过某个实际时间量前,导致当前线程等待

  当String 实现 Object 类的时候 ,String 重写了其部分方法。 如下:

        1、String重写了Object  的 hashCode()方法。

        Object类的hashCode.返回对象的内存地址经过处理后的结构,由于每个对象的内存地址都不一样,所以哈希码也不一样。

        String类的hashCode.根据String类包含的字符串的内容,根据一种特殊算法返回哈希码,只要字符串内容相同,返回的哈希码也相同。

        Object a = new Object();
        Object b = new Object();
        String c = "1213";
        String d= "1213";
        String e = new String("1213");
        String f = new String("1213");
        System.out.println("Oba:"+a.hashCode()+"||Obb:"+b.hashCode());
        System.out.println("Stc:"+c.hashCode()+"||Std:"+d.hashCode());
        System.out.println("Ste:"+e.hashCode()+"||Stf:"+f.hashCode());

        result:

        Oba:31168322||Obb:17225372
        Stc:1509379||Std:1509379
        Ste:1509379||Stf:1509379

        2、String 重写了 Object的equals() 方法。

        Object a = new Object();
        Object b = new Object();
        String c = "1213";
        String d= "1213";
        String e = new String("1213");
        String f = new String("1213");
        System.out.println(a.equals(b));
        System.out.println(c.equals(d));
        System.out.println(e.equals(f));
        System.out.println(c.equals(f));
        System.out.println(d.equals(f));

       result:

              false
              true
              true
              true
              true

          3、String 重写了 Object的toString() 方法。

      Object 类中的方法

     public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
    } 

      String类中的方法  

       public String toString() {
        return this;
        }

       我们可以看到String对象的toString()方法仅仅是输出了它的内容。

       未完待续。。。。

 

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

分享到:
评论

相关推荐

    基于java的开发源码-Calendar万年历.zip

    基于java的开发源码-Calendar万年历.zip 基于java的开发源码-Calendar万年历.zip 基于java的开发源码-Calendar万年历.zip 基于java的开发源码-Calendar万年历.zip 基于java的开发源码-Calendar万年历.zip 基于java的...

    基于java的开发源码-ICQ系统.zip

    基于java的开发源码-ICQ系统.zip 基于java的开发源码-ICQ系统.zip 基于java的开发源码-ICQ系统.zip 基于java的开发源码-ICQ系统.zip 基于java的开发源码-ICQ系统.zip 基于java的开发源码-ICQ系统.zip 基于java的开发...

    基于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的开发源码-github-Java-api.zip

    基于java的开发源码-github-Java-api.zip 基于java的开发源码-github-Java-api.zip 基于java的开发源码-github-Java-api.zip 基于java的开发源码-github-Java-api.zip 基于java的开发源码-github-Java-api.zip 基于...

    基于java的开发源码-PHPJava Bridge.zip

    基于java的开发源码-PHPJava Bridge.zip 基于java的开发源码-PHPJava Bridge.zip 基于java的开发源码-PHPJava Bridge.zip 基于java的开发源码-PHPJava Bridge.zip 基于java的开发源码-PHPJava Bridge.zip 基于java的...

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

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

    基于java的开发源码-Jease Java CMS.zip

    基于java的开发源码-Jease Java CMS.zip 基于java的开发源码-Jease Java CMS.zip 基于java的开发源码-Jease Java CMS.zip 基于java的开发源码-Jease Java CMS.zip 基于java的开发源码-Jease Java CMS.zip 基于java的...

    selenium-java-2.47.1.zip

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

    commons-lang-2.4.rar代码及jar文件

    Apache Commons Lang是Java编程语言中的一个实用工具库,它提供了许多在标准Java API中未涵盖的高级字符串和对象处理功能。这个"commons-lang-2.4.rar"压缩包包含了两个子文件,分别是"commons-lang-2.4-bin.zip"和...

    基于java的开发源码-贴心Java盒子.zip

    基于java的开发源码-贴心Java盒子.zip 基于java的开发源码-贴心Java盒子.zip 基于java的开发源码-贴心Java盒子.zip 基于java的开发源码-贴心Java盒子.zip 基于java的开发源码-贴心Java盒子.zip 基于java的开发源码-...

    基于java的开发源码-软件度量源码.zip

    基于java的开发源码-软件度量源码.zip 基于java的开发源码-软件度量源码.zip 基于java的开发源码-软件度量源码.zip 基于java的开发源码-软件度量源码.zip 基于java的开发源码-软件度量源码.zip 基于java的开发源码-...

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

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

    基于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的开发源码-加密库 JSDSI.zip

    基于java的开发源码-加密库 JSDSI.zip 基于java的开发源码-加密库 JSDSI.zip 基于java的开发源码-加密库 JSDSI.zip 基于java的开发源码-加密库 JSDSI.zip 基于java的开发源码-加密库 JSDSI.zip 基于java的开发源码-...

    基于java的开发源码-PList类库 Blister.zip

    基于java的开发源码-PList类库 Blister.zip 基于java的开发源码-PList类库 Blister.zip 基于java的开发源码-PList类库 Blister.zip 基于java的开发源码-PList类库 Blister.zip 基于java的开发源码-PList类库 Blister...

    基于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的开发源码-命令行进度条 JCmdLineProgess.zip

    基于java的开发源码-命令行进度条 JCmdLineProgess.zip 基于java的开发源码-命令行进度条 JCmdLineProgess.zip 基于java的开发源码-命令行进度条 JCmdLineProgess.zip 基于java的开发源码-命令行进度条 ...

    commons-lang-2.6.jar包

    commons-lang-2.6.jar包commons-lang-2.6.jar包commons-lang-2.6.jar包commons-lang-2.6.jar包commons-lang-2.6.jar包加源码

Global site tag (gtag.js) - Google Analytics