第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

了解java中的String

標(biāo)簽:
Java

java中提供了String类支持字符串的功能,毕竟字符串本质就是一堆字符的组合,那么就来看看它有什么特点吧。

String的特点
String把字符串还是存放在一个char数组中的,数据的操作围绕它展开,但有点特别的地方,代码如下

private final char value[];

可以发现这个char value[]是加了final的,也就是说一旦创建了值就不可变。这样就会导致每一次创建String只会有一个值,再对其进行字符串操作也必须生成新的值。java对这个处理使用了字符串常量池的概念。就是把字符串丢到一个池里,如果相同就用相同的。当然这也有个前提,就是要用下面的方式

String s = "abc";

这样做的时候jvm会在编译期就确定了,在运行时会先在常量池里查找是否有"abc",没有就添加并返回,有的话返回常量池的对象。这样做的好处是对于相同的字符串就不需要重复创建啦。 但是如果使用下面的代码

String s1 = new String("abc");

这个时候情景就变了,这里jvm会在堆里创建一个对象s1,只不过s1里的value也是指向"abc"的。后面在看字符串比较的时候会发现区别。字符串比较 看一段代码:

String s = "abc";
String s1 = "abc";

if (s == s1) {
    System.out.println("s == s1");
}

问:这时s==s1吗?

答案是相等的,为什么呢?其实jvm会在s1创建时去常量区查找是否有相同值的字符串,如果有就返回给s1,这样s1就和s指向了同一个字符串,所以是相等的。

但是还有一种情况就不一样,

String s = "abc";
String s3 = new String("abc");
if (s == s3) {
    System.out.println("s == s3");
} else {
    System.out.println("s != s3");
}

这个时候应该print出s != s3,这是因为new一个String对象后确实会创建一个新的变量。所以使用==比较的话自然就返回false了。

用到equals比较呢?

String s = "abc";
String s2 = new String("abc");
if (s.equals(s2)) {
    System.out.println("s = s2");
} else {
    System.out.println("s != s2");
}

打印是s = s2,因为==是用于比较两个地址,而equals是用于比较两个变量的值。可以看一下equals的代码

public boolean equals(Object anObject) {
    if (this == anObject) {
        return true;
    }
    if (anObject instanceof String) {
        String anotherString = (String)anObject;
        int n = value.length;
        if (n == anotherString.value.length) {
            char v1[] = value;
            char v2[] = anotherString.value;
            int i = 0;
            while (n-- != 0) {
                if (v1[i] != v2[i])
                    return false;
                i++;
            }
            return true;
        }
    }
    return false;
}

在equals中,先是比较是否地址相同,如果不相同比较value,因为value都是"abc"自然就返回true。


注:此文章转载至
https://www.cnblogs.com/5207/p/5892583.html

點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消