亚洲免费在线视频-亚洲啊v-久久免费精品视频-国产精品va-看片地址-成人在线视频网

您的位置:首頁技術文章
文章詳情頁

Java:判斷字符串相等

瀏覽:110日期:2024-02-13 15:56:11

問題描述

問題解答

回答1:

String a = new String('abc');a = a.intern();String b = 'abc';if (a == b) { System.out.println('相等');} else { System.out.println('不等');}

你是調用了a.intern()方法,但是你又沒有將返回結果重新賦值,a還是原來那個a。

回答2:

字符串相等用 equals() 判斷,Java 中這個題都考爛了噠!

回答3:

a.intern();不會改變a字符的引用,他有個返回值。下面這樣才會相等

String b = a.intern();回答4:

String a = new String('abc');

這里的a和'abc'是兩個對象,當調用 intern 方法時,字符常量池中已經包含一個等于此對象的字符串了,所以intern這個方法調用等于沒用,即使后面b='abc',b和a也不是同一個對象。

想要輸出相等的話,要么第一句變成:

String a = 'abc';

要么第二句變成:

a = a.intern();回答5:

首先要知道一點是==操作判斷的是:是否a,b兩個對象或基本類型指向同一內存區域

String的底層實現是private final value[]String實例化時,實際上是通過System.arraycopy劃分一段連續內存保存char數組。

new String('abc')實際上不推薦這種方法初始化String,實際實現起來比 a = 'abc'多了一個步驟,底層步驟是

劃分內存空間,創建臨時數組temp

temp[0] = ’a’;temp[1] = ’b’;temp[2] = ’c’;

創建數組value ,將value所指內存空間指向temp指向的內存空間,即 &value = &temp(若使用a = 'abc'則不需要這步)

intern方法是jdk1.5提供的方法,用于內存優化的,相同String引用共同內存空間,實際上就是上述的第三步。這里若要a,b相等,可以寫為

String a = 'abc';String b = 'abc'.intern(); 或者String b = a.intern();

實際上 進行的操作就是上述的第三步,即 b = a;

String b = 'abc'實際的底層實現是:

劃分內存空間,創建數組value

value[0] = a.value[0];value[1] = a.value[0]’;value[2] = a.value[0];

第二步中,String b中value[0]中的String a中的value[0]實際中指向的是同一個內存地址,因此實際上b.value[0] = a.value[0] = ’a’,但b.value 不等于a.value,根本原因在于指向內存區域不同

推薦看一下String的源碼分析【JAVA源碼分析——Java.lang】String源碼分析

標簽: java
相關文章:
主站蜘蛛池模板: 国产精品一区亚洲一区天堂 | 美女大片高清特黄a大片 | 国产精品亚洲第一区二区三区 | 日韩午夜在线视频不卡片 | 中文字幕一二三区乱码老 | 欧美aaaaaabbbbb | 美国毛片一级 | 日韩精品中文字幕一区二区三区 | 欧美高清亚洲欧美一区h | 天天干夜夜怕 | 亚洲综合美女 | 99久久国产免费福利 | 毛片免费观看的视频在线 | 日韩a级一片 | 国产日韩线路一线路二 | 成人男女啪啪免费观看网站 | 久在线 | aa毛片免费全部播放完整 | 国产成人精品久久综合 | 一级生性活免费视频 | 91无毒不卡 | 午夜剧场成年 | 毛片免费看网站 | 一区二区在线播放福利视频 | 亚洲成人高清在线观看 | 中文字幕亚洲精品久久 | 男人的天堂在线 | 国产农村乱子伦精品视频 | 欧美高清一区二区三区欧美 | 亚洲人成网址在线播放a | 国产日韩一区二区三区 | 欧美黄网在线 | 日本高清在线中文字幕网 | 亚洲六月丁香六月婷婷蜜芽 | 欧美一级淫片免费观看 | 特级aa毛片在线播放 | 男女午夜爱爱久久无遮挡 | 99久国产 | 久久99这里只有精品国产 | 久久99久久99精品观看 | 久久国产亚洲欧美日韩精品 |