<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    期待更好更穩定的開源FrameWork的出現,讓我們一起努力吧!  
    日歷
    <2008年12月>
    30123456
    78910111213
    14151617181920
    21222324252627
    28293031123
    45678910
    統計
    • 隨筆 - 78
    • 文章 - 1
    • 評論 - 29
    • 引用 - 0

    導航

    常用鏈接

    留言簿(1)

    隨筆分類

    隨筆檔案(42)

    文章檔案(37)

    相冊

    搜索

    •  

    積分與排名

    • 積分 - 45522
    • 排名 - 1064

    最新隨筆

    最新評論

    閱讀排行榜

    評論排行榜

     

    我有很多概念都沒明白,現在反過頭來認識。

    Object是所有類的父類。
    java.lang.String也是繼承自java.lang.Object中。

    先比較一下2個類的toString()、equals()、= = (很多面試題都有),再來說一下String 的特殊。

    2個類toString()的比較:

    class Test {
        
    public static void
     main(String [] args) {
            Object obj 
    = new
     Object();
            Dog d 
    = new
     Dog();
            String s 
    = new String("abc"
    );
            
            System.out.println(
    "obj = " +
     obj);    
            System.out.println(
    "d = " +
     d);
            System.out.println(
    "s = " +
     s);
        }
    }

    class
     Dog {}

    結果:

    obj 
    =
     java.lang.Object@c17164
    =
     Dog@1fb8ee3
    =
     abc


    查閱API文檔:

    Object類的 public String toString()   returns  
                        getClass().getName() 
    + '@' +
     Integer.toHexString(hashCode())
    String類的  
    public
     String toString()   returns  
                          the string itself.


    說明String類重寫了Object的toString方法。

    2個類equals()、= =比較:

    class Test {
        
    public static void
     main(String [] args) {
            
            
    //比較equals()和==

            Dog d1 = new Dog(1);
            Dog d2 
    = new Dog(1
    );
            
            System.out.println(
    "d1 == d2 " + (d1 == d2)); //false

            System.out.println("d1.equals(d2) " + d1.equals(d2)); //false
            
            String s1 
    = new String("abc"
    );
            String s2 
    = new String("abc"
    );
            String s3 
    = "abc"
    ;
            
            System.out.println(
    "s1 == s2 " + (s1 == s2)); //false

            System.out.println("s1.equals(s2) " + s1.equals(s2)); //ture
            
            System.out.println(
    "s1 == s3 " + (s1 == s3)); //false

            System.out.println("s1.equals(s3) " + s1.equals(s3)); //true
        }
    }

    class
     Dog {
        
    private int
     i;
        Dog(){}
        Dog(
    int
     i){
            
    this.i =
     i;
        }
    }

     

    "=="是比較2個對象的引用是否指向同一個地址,如果是比較2個基本類型,那么就是比較2個值是否相等。
    我new了2個Dog類,他們2個對象的棧引用肯定不能指向同一個堆地址。第二個String對象"=="的比較也是同樣道理。所以都返回了false(第三個比較體現了String的特殊類,等下說明)。

    查閱jdk的源代碼:"equals"在Object中定義為

    public boolean equals(Object obj) {
        
    return (this ==
     obj);
    }

    這就表示一個類如果沒有重寫該方法的話,它就是比較兩個的引用是否指向了同一個地址(和"=="比較是一致的)。
    類庫里的類基本都重寫的該方法,所以是比較2個對象的內容是否一樣的(String方法重寫了該方法,所以第二個equals比較返回ture),對于外面自己自定義的類,則需要自己重寫該方法來達到內容是否相等的邏輯。


    特殊對象String的equals()、= =比較

    String s = newString("abc");和String s = "abc";
    首先2個對象在內存分布上是不一樣的。第2個對象是s的棧引用指向數據片段區的地址(存放字符串常量,靜態成員變量)。第1個new出來的對象是s的棧引用指向堆中的地址(存放在堆中)。通過API文檔:新創建的字符串對象s是該參數字符串("abc")的副本。

    所以如代碼所表示:"=="比較是不一樣的,equals方法由于String重寫了,比較是字符序列。

     

    String s1 = "abc"    和  String s2 = "abc"比較;

    "=="和equals方法都返回ture;
    s1分配了字符常量"abc",那么再有"abc"要引用給對象,都不會再分配內存空間了。
    所以s1 和s2 指向的空間相同,內容也相同。



    posted on 2008-12-09 12:46 BlueSky_itwangxinli 閱讀(180) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
     
    Copyright © BlueSky_itwangxinli Powered by: 博客園 模板提供:滬江博客
    主站蜘蛛池模板: 成人久久免费网站| 日本19禁啪啪无遮挡免费动图| 在线免费观看伊人三级电影| 久久国产乱子伦精品免费看| 国产亚洲精品自在线观看| 亚洲福利视频一区二区三区| 无码国产精品一区二区免费3p| 中文字幕不卡亚洲 | av午夜福利一片免费看久久| 午夜亚洲av永久无码精品| 久久久久亚洲精品影视| 中文字幕无码精品亚洲资源网久久| 国产精彩免费视频| 国产精品亚洲综合久久| 国产精品麻豆免费版| 久久久久久亚洲AV无码专区| 4399影视免费观看高清直播| 亚洲免费视频一区二区三区| h片在线观看免费| 亚洲AV无码第一区二区三区 | 日韩毛片一区视频免费| 最近免费字幕中文大全视频| 久久久久亚洲AV成人网| 成全视频免费观看在线看| 亚洲日本一区二区| 性感美女视频免费网站午夜| 国产精品亚洲一区二区三区| 久视频精品免费观看99| 亚洲色偷偷色噜噜狠狠99网| 男人的天堂亚洲一区二区三区 | 久久精品免费电影| 亚洲成电影在线观看青青| 青青草国产免费久久久91| 亚洲国产国产综合一区首页| 成年在线观看网站免费| 国产亚洲精品国产福利在线观看 | 亚洲码一区二区三区| 免费看男女下面日出水视频 | 一本无码人妻在中文字幕免费 | 中文字幕在线免费观看| 亚洲精品无码专区|