<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)

    隨筆分類

    隨筆檔案

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜


    先看一個(gè)簡(jiǎn)單的例子:
    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);
        }
    }
    答案很簡(jiǎn)單:
    java
    javaC

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

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


    第二個(gè)例子:
    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

    開(kāi)始時(shí)a、x指向同一個(gè)StringBuffer對(duì)象(這里稱它為對(duì)象1),它的值是"a";
                b、y指向同一個(gè)StringBuffer對(duì)象,它的值是"b"。
    執(zhí)行x.append(y)時(shí),對(duì)象1的值被改變,變?yōu)?ab";
    而執(zhí)行y=x時(shí),變量y指向被改變,指向了和x同一個(gè)StringBuffer對(duì)象。但是變量b的指向還是沒(méi)有改變,所以仍然為"b"


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

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

    不是吧,java對(duì)于基本類型是傳遞的是值的copy,
    對(duì)于對(duì)象類型傳遞的是引用的copy.
    public static void operate(StringBuffer x, StringBuffer y) {
    x.append(y);
    y = x;
    }
    雖然y指向?qū)ο骯b,但buffB 仍然指向了b  回復(fù)  更多評(píng)論
      
    # re: String StringBuffer 2008-11-27 16:27 EvanLiu
    是的,對(duì)象類型傳遞的是引用的copy,但這個(gè)copy就是一個(gè)value
    a Java application passes object references by value  回復(fù)  更多評(píng)論
      
    主站蜘蛛池模板: 怡红院免费的全部视频| 中文字幕免费在线看线人| 久久久久亚洲AV成人无码| 成人无遮挡裸免费视频在线观看 | 亚洲阿v天堂在线2017免费| 亚洲阿v天堂在线| 91香蕉成人免费网站| 美女视频免费看一区二区| 亚洲av成人无码久久精品| 免费黄色毛片视频| 99热在线日韩精品免费| 中文日韩亚洲欧美制服| 国产亚洲精久久久久久无码AV| 精品女同一区二区三区免费站| 边摸边吃奶边做爽免费视频网站| 婷婷亚洲久悠悠色悠在线播放| 精品久久免费视频| 久久久久久久久久国产精品免费| 亚洲成a∨人片在无码2023| 久久夜色精品国产噜噜噜亚洲AV| 免费在线观看黄网站| 日韩免费一区二区三区在线播放| 国产VA免费精品高清在线| 亚洲欧洲免费无码| 亚洲第一精品福利| 国产成人精品亚洲精品| 免费看少妇作爱视频| 999任你躁在线精品免费不卡| 一级做a爰片性色毛片免费网站| 亚洲免费网站在线观看| 亚洲一区二区女搞男| 国产日产成人免费视频在线观看| 18成禁人视频免费网站| 国产无遮挡无码视频免费软件| 男男gvh肉在线观看免费| 久久亚洲精品国产亚洲老地址| 久久亚洲AV成人无码软件| 亚洲乱码中文字幕久久孕妇黑人| 国产婷婷高清在线观看免费| 台湾一级毛片永久免费| 免费无码中文字幕A级毛片|