大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國(guó)咨詢/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁(yè) 學(xué)習(xí)攻略 職業(yè)指南 修煉手冊(cè):Java字符串面試題

修煉手冊(cè):Java字符串面試題

更新時(shí)間:2022-12-26 15:03:24 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽1183次

1、判斷s1和s2是否相等

	String s1 = "123";
	String s2 = "123";
	System.out.println(s1 == s2);       // true
	System.out.println(s1.equals(s2));  // true

首先需要知道的是第一種方式是常量池中的對(duì)象的地址的比較

第二種是利用了String類的equals方法比較,看下源碼:

public boolean equals(Object anObject) {
    	// 判斷當(dāng)前的string對(duì)象是否和傳入進(jìn)來(lái)的對(duì)象的地址值相同
        if (this == anObject) {
            return true;
        }
    	// 傳入進(jìn)來(lái)的對(duì)象是否是字符串類型的
        if (anObject instanceof String) {
            // 向下轉(zhuǎn)型,利用多態(tài)性質(zhì)
            String anotherString = (String)anObject;
            // 判斷兩個(gè)字符串的長(zhǎng)度是否是相等的
            int n = value.length;
            if (n == anotherString.value.length) {
                // 拿到當(dāng)前對(duì)象的數(shù)組和比較進(jìn)來(lái)的數(shù)組
                // 居然還有這種操作,對(duì)于同種數(shù)據(jù)類型的來(lái)說(shuō),可以直接來(lái)進(jìn)行操作
                char v1[] = value;
                char v2[] = anotherString.value;
                int i = 0;
                // 遍歷每一個(gè)字符數(shù)組中的每一個(gè)元素
                while (n-- != 0) {
                    if (v1[i] != v2[i])
                        return false;
                    i++;
                }
                return true;
            }
        }
    	// 如果對(duì)象既不是和當(dāng)前string對(duì)象地址相同;也不是同一個(gè)類型的;長(zhǎng)度也不相等
        return false;
    }

可以看到返回true的只有兩個(gè)地方:一、是同一個(gè)對(duì)象;第二個(gè)、字符串中的每個(gè)字符都是相同的。

但是對(duì)于字符串來(lái)說(shuō),無(wú)論是哪一種都是可以的,只不過(guò)第一種的話更加實(shí)用而已。

2、以下代碼創(chuàng)建了幾個(gè)對(duì)象

	String s = new String("abc");

首先第一步:確定常量池中是否有"abc"這個(gè)對(duì)象,如果沒(méi)有,那么先在常量池中創(chuàng)建"abc"對(duì)象;如果有,那么就不需要在創(chuàng)建;

然后再?gòu)亩阎械钠渌臻g來(lái)創(chuàng)建一個(gè)對(duì)象,"abc"

所以可能創(chuàng)建了一個(gè)對(duì)象,也可能是創(chuàng)建了兩個(gè)對(duì)象。這取決于常量池中是否有"abc"

3、判斷new String是否相等

		String s1 = new String("abc");
		String s2 = "abc";
        System.out.println(s1 == s2);            // false
        System.out.println(s1.equals(s2));       // true

第一行代碼先去常量池中查找是否"abc"對(duì)象,然后再去堆中創(chuàng)建一個(gè)對(duì)象,返回s1指向堆中的內(nèi)存;

第二行中直接返回常量池中的地址;

第三行中==比較的是兩個(gè)字符串的地址不同,所以返回為false;

第四行中利用的equals方法比較的是兩個(gè)字符串,上面已經(jīng)分析過(guò)了。

這里需要注意的是:堆內(nèi)存中的和常量池中的都是用數(shù)組來(lái)進(jìn)行存儲(chǔ)的,比較的是數(shù)組中的字符

4、string被final修飾,值是不可變的,解釋?

String類上就是用final來(lái)進(jìn)行修飾的,所以這個(gè)類是無(wú)法繼承的;

String類中用來(lái)存放成員的字符串使用char數(shù)組,只不過(guò)使用final來(lái)修飾的變量,如果一旦確定了值,那么對(duì)應(yīng)的地址將無(wú)法來(lái)進(jìn)行修改。但是我們可以修改其中的數(shù)組中的值,但是String類并沒(méi)有來(lái)給我們提供。

int i = 0;
while(true){
    if(i>obj.length) break;
    obj[i] = i;
    i++;
}

可以賦值,也可以來(lái)修改值。但是數(shù)組的引用是固定的。

String類但是我們?nèi)プ鲂薷模](méi)有提供對(duì)應(yīng)的方法來(lái)進(jìn)行操作。

看看下面這段代碼:

	 String s = "Java";
	 s = "HTML";

值是不可變的,說(shuō)的是存儲(chǔ)的字符串的地址是沒(méi)有辦法改變的,但是引用可以隨便指向。

對(duì)于狀態(tài)來(lái)說(shuō),已經(jīng)是固定的,無(wú)法來(lái)對(duì)其進(jìn)行修改。

以上就是“修煉手冊(cè):Java字符串面試題”,你能回答上來(lái)嗎?如果想要了解更多的Java面試題相關(guān)內(nèi)容,可以關(guān)注動(dòng)力節(jié)點(diǎn)Java官網(wǎng)。

提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)

  • 全國(guó)校區(qū) 2025-04-24 搶座中
  • 全國(guó)校區(qū) 2025-05-15 搶座中
  • 全國(guó)校區(qū) 2025-06-05 搶座中
  • 全國(guó)校區(qū) 2025-06-26 搶座中
免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 亚洲综合网在线 | 成人亚洲国产精品久久 | 免费一级毛片在线播放 | 亚洲精品久久一区二区无卡 | 日日干影院| 国产精品999在线 | 欧美在线一级视频 | 精品无人区乱码一区二区三区手机 | 中文在线不卡 | 亚洲欧美日韩成人一区在线 | 四虎影视成人永久在线观看 | 欧美一级片免费 | 狠狠色丁香六月色 | 久久精品国产免费观看99 | 久热99| 在线观看免费av网站 | 亚洲国产成人久久综合一区 | 欧美一区二区三区免费视频 | 越猛烈欧美xx00动态图免费 | 亚洲欧美精品成人久久91 | 国产在线观看中文字幕 | 99在线视频免费观看 | 在线观看麻豆国产精品 | 婷婷的久久五月综合先锋影音 | 国产手机在线视频放线视频 | 色鬼综合 | 国产91在线看 | 六月色婷婷 | 奇米777视频国产 | 成年人网站免费 | 成人免费视频在线观看 | 四色婷婷 | 国产伦精品一区二区三区免 | 国产欧美日韩一区二区三区 | 中文字幕一区二区三区四区 | 在线观看a视频 | 欧美jizzhd欧美巨大 | 精品国产九九 | 女性一级全黄生活片在线播放 | 亚色视频在线观看 | 国产精品永久免费 |