麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

java進(jìn)階之字符串替換的思考

2019-11-18 13:45:21
字體:
供稿:網(wǎng)友

    最近在開發(fā)的過程中用到了字符串的替換, 本來覺得挺簡(jiǎn)單的問題,卻總也解決不了。字符串明明是替換了,卻總也輸出不了正確結(jié)果,很是郁悶,到底是為什么呢?
    先來看我的代碼:
     Newsdetials nt=(Newsdetials)ntIter.next();
     System.out.     String content=nt.getContent();
     System.out.println("新聞的內(nèi)容是  :     "+content);
     //轉(zhuǎn)換字符串中的雙引號(hào)為單引號(hào)
     content.replaceAll("/"","'");
     System.out.println("替換后的字符傳是:     "+content);
    程序解釋:
        程序的前部分是通過迭代器來遍歷新聞的明細(xì)記錄。
        我的目的是想用雙引號(hào)來替換掉字符串中的單引號(hào)。
        以上是我開始使用的方法,我輸出的結(jié)果是什么呢?也許你會(huì)和我當(dāng)初的想法相同?輸出的是替換后的內(nèi)容。
        答案是錯(cuò)的。輸出的內(nèi)容和其替換前的內(nèi)容相同。明明替換了,這是為什么呢?我也是好久都沒找到答案。
        一個(gè)偶然的機(jī)會(huì),讓我實(shí)現(xiàn)了我的目的。我的實(shí)現(xiàn)如下:
     Newsdetials nt=(Newsdetials)ntIter.next();
     System.out.println("新聞明細(xì)記錄    "+nt);
     String content=nt.getContent();
     System.out.println("新聞的內(nèi)容是  :     "+content);
     //轉(zhuǎn)換字符串中的雙引號(hào)為單引號(hào)
     String  content0=content.replaceAll("/"","'");
System.out.println("替換后的字符傳是:     "+content0);
程序解釋:
這一段代碼看上去和前段相同,但卻實(shí)現(xiàn)了我的目的。

我很是不解,就看了一下源代碼,才發(fā)現(xiàn)其中的奧妙。我們分析一下上面的兩段程序:
唯一的不同點(diǎn)是:后者將替換后的字符串賦給了另一個(gè)字符串變量,也就是說將替換后的字符串取出,而前者沒有。也就是這一點(diǎn)導(dǎo)致了結(jié)果的不同。
于是我就查看了其實(shí)現(xiàn)的源代碼:
我們來看String的replaceAll()方法的實(shí)現(xiàn):
    public String replaceAll(String regex, String replacement) {
        return Pattern.compile(regex).matcher(this).replaceAll(replacement);
    }
我們可以看到,其最終是調(diào)用了matcher(this).replaceAll(replacement)方法來實(shí)現(xiàn)的,我們看其是怎么實(shí)現(xiàn)的:
    public String replaceAll(String replacement) {
        reset();
        boolean result = find();
        if (result) {
            

StringBuffer sb = new StringBuffer();


            do {
                appendReplacement(sb, replacement);
                result = find();
            } while (result);
            appendTail(sb);
            return sb.toString();
        }
        return text.toString();
    }

看這一段代碼讓我們明白了一切:
我們知道在
java中,假如傳遞的是對(duì)象,那么是址傳遞,所以讓我們以為,讓原字符串替代后就可以了。同時(shí)我們調(diào)用了該字符串的替代方法,直接就修改了其串的值。 
上面的代碼告訴我們,錯(cuò)了。
因?yàn)榇煮w的部分產(chǎn)生了一個(gè)新的對(duì)象:StringBuffer的一個(gè)實(shí)例,而返回的是他的串值,而不是原來的content。
到此,你是否也弄明白了呢??

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 国产手机av在线 | 99爱福利视频在线观看 | 精国产品一区二区三区 | 久久精品a一级国产免视看成人 | 亚洲精品一区二区三区大胸 | 国产羞羞视频在线免费观看 | 看免费的毛片 | 一级免费 | 欧美性生活久久久 | 国产一区二区在线免费播放 | 久久色播 | 日韩黄色一区 | 欧美日韩一区,二区,三区,久久精品 | 黄色一级片免费观看 | 5xsq在线视频 | 亚洲视屏| 久久亚洲精品久久国产一区二区 | 国产一区视频观看 | 欧美城网站地址 | av免费提供 | 亚洲精品日韩色噜噜久久五月 | 国产盼盼私拍福利视频99 | 全黄性性激高免费视频 | 久久精品国产99久久久古代 | 欧美爱爱视频网站 | 成人免费毛片在线观看 | 精品国产看高清国产毛片 | 天堂二区| 国产91片 | 亚洲欧美一区二区三区在线观看 | 国产免费人做人爱午夜视频 | 逼特逼视频在线观看 | 国产一区二区三区在线免费 | av在线免费电影 | 亚洲福利在线视频 | 亚洲人成网站免费播放 | 美国av在线免费观看 | 一级在线观看视频 | 色戒在线版 | 国产一级毛片国产 | 国产精品一区在线看 |