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

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

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

    隨筆 - 37  文章 - 29  trackbacks - 0


    常用鏈接

    留言簿(3)

    隨筆分類

    隨筆檔案

    最新評論

    閱讀排行榜

    評論排行榜


    先看一個簡單的例子:
    public class Test1 {
        public static void operateString(String s) {
            s.replace("j", "i");
        }

        public static void operateStringBuffer(StringBuffer sb) {
            sb.append("C");
        }

        public static void main(String args[]) {
            String sa = new String("java");
            StringBuffer sba = new StringBuffer("java");
            operateString(sa);
            operateStringBuffer(sba);
            System.out.println(sa);
            System.out.println(sba);
        }
    }
    答案很簡單:
    java
    javaC

    原則:
    1.String是不可變對象:public final class String extends Object
    2.java中只有值傳遞

    replace函數源碼中:
    public String replace(char oldChar, char newChar) {
         ...
         return new String(0, len, buf);
    }
    返回的是另一個String對象。
    而在上面的
    operateString方法中,是無返回值的,新產生的String對象被丟棄了,而sa仍然指向最初的那個String對象。


    第二個例子:
    public class Test2 {
        public static void operate(StringBuffer x, StringBuffer y) {
            x.append(y);
            y = x;
        }

        public static void main(String args[]) {
            StringBuffer buffA = new StringBuffer("a");
            StringBuffer buffB = new StringBuffer("b");
            operate(buffA, buffB);
            System.out.println(buffA + "," + buffB); 
        }
    }
    答案是:
    ab,b

    開始時a、x指向同一個StringBuffer對象(這里稱它為對象1),它的值是"a";
                b、y指向同一個StringBuffer對象,它的值是"b"。
    執行x.append(y)時,對象1的值被改變,變為"ab";
    而執行y=x時,變量y指向被改變,指向了和x同一個StringBuffer對象。但是變量b的指向還是沒有改變,所以仍然為"b"


    posted on 2008-04-08 20:59 EvanLiu 閱讀(1486) 評論(2)  編輯  收藏 所屬分類: Java基礎

    FeedBack:
    # re: String StringBuffer 2008-11-04 15:25 sclsch
    2.java中只有值傳遞

    不是吧,java對于基本類型是傳遞的是值的copy,
    對于對象類型傳遞的是引用的copy.
    public static void operate(StringBuffer x, StringBuffer y) {
    x.append(y);
    y = x;
    }
    雖然y指向對象ab,但buffB 仍然指向了b  回復  更多評論
      
    # re: String StringBuffer 2008-11-27 16:27 EvanLiu
    是的,對象類型傳遞的是引用的copy,但這個copy就是一個value
    a Java application passes object references by value  回復  更多評論
      
    主站蜘蛛池模板: 亚洲精品国产成人片| 啦啦啦中文在线观看电视剧免费版| 国产精品无码一二区免费| 亚洲综合av一区二区三区不卡 | 青青草国产免费久久久下载| 亚洲校园春色另类激情| 美女被cao免费看在线看网站| 337p日本欧洲亚洲大胆精品555588| 少妇太爽了在线观看免费视频| 亚洲天天做日日做天天欢毛片| 99精品视频在线观看免费播放 | 免费无码中文字幕A级毛片| 久久青青草原亚洲av无码app | 成人黄页网站免费观看大全| 亚洲国产精品自在自线观看| 国产zzjjzzjj视频全免费| 又长又大又粗又硬3p免费视频 | 国产美女无遮挡免费视频网站 | 中文字幕不卡高清免费| 亚洲AV永久精品爱情岛论坛| 十八禁无码免费网站| 亚洲色无码国产精品网站可下载| 免费jlzzjlzz在线播放视频| 精品人妻系列无码人妻免费视频| 亚洲av日韩av高潮潮喷无码 | 亚洲色偷偷综合亚洲AV伊人| 青青青国产手机频在线免费观看| 亚洲国产精品乱码在线观看97| 免费高清小黄站在线观看| 日韩电影免费在线观看网址| 久久国产精品亚洲综合| 亚洲人成网站免费播放| www免费黄色网| 亚洲高清免费在线观看| 国产免费私拍一区二区三区| APP在线免费观看视频| 亚洲а∨天堂久久精品9966| 亚洲综合无码AV一区二区 | 中文字幕免费在线观看| 美女被免费网站在线视频免费 | 无人在线观看完整免费版视频|