草草影院ccyy国产日本欧美-草草影院第一页yycccom-草草影院国产第一页-草的爽免费视频-国语自产精品视频在线区-国语自产拍在线观看任你躁

將想法與焦點(diǎn)和您一起共享

Java初學(xué)者必須掌握的幾個(gè)問題發(fā)布者:本站     時(shí)間:2020-05-06 14:05:13

對(duì)于這個(gè)系列里的問題,每個(gè)學(xué)Java的人都應(yīng)該搞懂。當(dāng)然,如果只是學(xué)Java玩玩就無所謂了。如果你認(rèn)為自己已經(jīng)超越初學(xué)者了,卻不很懂這些問題,請(qǐng)將你自己重歸初學(xué)者行列。

問題一:我聲明了什么!

String s = "Hello world!";

許多人都做過這樣的事情,但是,我們到底聲明了什么?回答通常是:一個(gè)String,內(nèi)容是“Hello world!”。這樣模糊的回答通常是概念不清的根源。如果要準(zhǔn)確的回答,一半的人大概會(huì)回答錯(cuò)誤。

這個(gè)語句聲明的是一個(gè)指向?qū)ο蟮囊茫麨椤皊”,可以指向類型為String的任何對(duì)象,目前指向"Hello world!"這個(gè)String類型的對(duì)象。這就是真正發(fā)生的事情。我們并沒有聲明一個(gè)String對(duì)象,我們只是聲明了一個(gè)只能指向String對(duì)象的引用變量。所以,如果在剛才那句語句后面,如果再運(yùn)行一句:

String string = s;

我們是聲明了另外一個(gè)只能指向String對(duì)象的引用,名為string,并沒有第二個(gè)對(duì)象產(chǎn)生,string還是指向原來那個(gè)對(duì)象,也就是,和s指向同一個(gè)對(duì)象。

問題二:"=="和equals方法究竟有什么區(qū)別?

==操作符專門用來比較變量的值是否相等。比較好理解的一點(diǎn)是:

int a=10;
int b=10;

則a==b將是true。
但不好理解的地方是:
String a=new String("foo");
String b=new String("foo");
則a==b將返回false。

根據(jù)前一帖說過,對(duì)象變量其實(shí)是一個(gè)引用,它們的值是指向?qū)ο笏诘膬?nèi)存地址,而不是對(duì)象本身。a和b都使用了new操作符,意味著將在內(nèi)存中產(chǎn)生兩個(gè)內(nèi)容為"foo"的字符串,既然是“兩個(gè)”,它們自然位于不同的內(nèi)存地址。a和b的值其實(shí)是兩個(gè)不同的內(nèi)存地址的值,所以使用"=="操作符,結(jié)果會(huì)是false。誠(chéng)然,a和b所指的對(duì)象,它們的內(nèi)容都是"foo",應(yīng)該是“相等”,但是==操作符并不涉及到對(duì)象內(nèi)容的比較。

對(duì)象內(nèi)容的比較,正是equals方法做的事。

看一下Object對(duì)象的equals方法是如何實(shí)現(xiàn)的:

boolean equals(Object o){   return this==o;
}

 

Object對(duì)象默認(rèn)使用了= =操作符。所以如果你自創(chuàng)的類沒有覆蓋equals方法,那你的類使用equals和使用==會(huì)得到同樣的結(jié)果。同樣也可以看出,Object的 equals方法沒有達(dá)到equals方法應(yīng)該達(dá)到的目標(biāo):比較兩個(gè)對(duì)象內(nèi)容是否相等。因?yàn)榇鸢笐?yīng)該由類的創(chuàng)建者決定,所以O(shè)bject把這個(gè)任務(wù)留給了類的創(chuàng)建者。

看一下一個(gè)極端的類:

Class Monster{
private String content;

...

boolean equals(Object another){ return true;}

}

我覆蓋了equals方法。這個(gè)實(shí)現(xiàn)會(huì)導(dǎo)致無論Monster實(shí)例內(nèi)容如何,它們之間的比較永遠(yuǎn)返回true。

所以當(dāng)你是用equals方法判斷對(duì)象的內(nèi)容是否相等,請(qǐng)不要想當(dāng)然。因?yàn)榭赡苣阏J(rèn)為相等,而這個(gè)類的作者不這樣認(rèn)為,而類的equals方法的實(shí)現(xiàn)是由他掌握的。如果你需要使用equals方法,或者使用任何基于散列碼的集合 (HashSet,HashMap,HashTable),請(qǐng)察看一下java doc以確認(rèn)這個(gè)類的equals邏輯是如何實(shí)現(xiàn)的。

問題三:String到底變了沒有?

沒有。因?yàn)镾tring被設(shè)計(jì)成不可變(immutable)類,所以它的所有對(duì)象都是不可變對(duì)象。請(qǐng)看下列代碼:

String s = "Hello";
s = s + " world!";

s所指向的對(duì)象是否改變了呢? 從本系列第一篇的結(jié)論很容易導(dǎo)出這個(gè)結(jié)論。我們來看看發(fā)生了什么事情。在這段代碼中,s原先指向一個(gè)String對(duì)象,內(nèi)容是"Hello",然后我們對(duì) s進(jìn)行了+操作,那么s所指向的那個(gè)對(duì)象是否發(fā)生了改變呢?答案是沒有。這時(shí),s不指向原來那個(gè)對(duì)象了,而指向了另一個(gè)String對(duì)象,內(nèi)容為 "Hello world!",原來那個(gè)對(duì)象還存在于內(nèi)存之中,只是s這個(gè)引用變量不再指向它了。

通過上面的說明,我們很容易導(dǎo)出另一個(gè)結(jié)論,如果經(jīng)常對(duì)字符串進(jìn)行各種各樣的修改,或者說,不可預(yù)見的修改,那么使用String來代表字符串的話會(huì)引起很大的內(nèi)存開銷。因?yàn)镾tring對(duì)象建立之后不能再改變,所以對(duì)于每一個(gè)不同的字符串,都需要一個(gè)String對(duì)象來表示。這時(shí),應(yīng)該考慮使用StringBuffer類,它允許修改,而不是每個(gè)不同的字符串都要生成一個(gè)新的對(duì)象。并且,這兩種類的對(duì)象轉(zhuǎn)換十分容易。

同時(shí),我們還可以知道,如果要使用內(nèi)容相同的字符串,不必每次都new一個(gè)String。例如我們要在構(gòu)造器中對(duì)一個(gè)名叫s的String引用變量進(jìn)行初始化,把它設(shè)置為初始值,應(yīng)當(dāng)這樣做:

public class Demo {
private String s;
...
public Demo {
s = "Initial Value";
}
...
}
而非
s = new String("Initial Value");

后者每次都會(huì)調(diào)用構(gòu)造器,生成新對(duì)象,性能低下且內(nèi)存開銷大,并且沒有意義,因?yàn)镾tring對(duì)象不可改變,所以對(duì)于內(nèi)容相同的字符串,只要一個(gè)String對(duì)象來表示就可以了。也就說,多次調(diào)用上面的構(gòu)造器創(chuàng)建多個(gè)對(duì)象,他們的String類型屬性s都指向同一個(gè)對(duì)象。

上面的結(jié)論還基于這樣一個(gè)事實(shí):對(duì)于字符串常量,如果內(nèi)容相同,Java認(rèn)為它們代表同一個(gè)String對(duì)象。而用關(guān)鍵字new調(diào)用構(gòu)造器,總是會(huì)創(chuàng)建一個(gè)新的對(duì)象,無論內(nèi)容是否相同。

至于為什么要把String類設(shè)計(jì)成不可變類,是它的用途決定的。其實(shí)不只 String,很多Java標(biāo)準(zhǔn)類庫(kù)中的類都是不可變的。在開發(fā)一個(gè)系統(tǒng)的時(shí)候,我們有時(shí)候也需要設(shè)計(jì)不可變類,來傳遞一組相關(guān)的值,這也是面向?qū)ο笏枷氲捏w現(xiàn)。不可變類有一些優(yōu)點(diǎn),比如因?yàn)樗膶?duì)象是只讀的,所以多線程并發(fā)訪問也不會(huì)有任何問題。當(dāng)然也有一些缺點(diǎn),比如每個(gè)不同的狀態(tài)都要一個(gè)對(duì)象來代表,可能會(huì)造成性能上的問題。所以Java標(biāo)準(zhǔn)類庫(kù)還提供了一個(gè)可變版本,即StringBuffer。



選擇我們,優(yōu)質(zhì)服務(wù),不容錯(cuò)過
1. 優(yōu)秀的網(wǎng)絡(luò)資源,強(qiáng)大的網(wǎng)站優(yōu)化技術(shù),穩(wěn)定的網(wǎng)站和速度保證
2. 15年上海網(wǎng)站建設(shè)經(jīng)驗(yàn),優(yōu)秀的技術(shù)和設(shè)計(jì)水平,更放心
3. 全程省心服務(wù),不必?fù)?dān)心自己不懂網(wǎng)絡(luò),更省心。
------------------------------------------------------------
24小時(shí)聯(lián)系電話:021-58370032
老头的大龟挺进秀婷小说| 99精品人妻少妇一区二区| 精品人妻一区二区三区四区| 亚洲AV无码久久寂寞少妇多毛| 国产女人18毛片水真多18精品| 午夜无码片在线观看影视| 国产日产欧产美韩系列国| 香蕉久久久久久AV成人| 国产亚洲精品在AV| 亚洲AV永久精品无码| 狠狠做五月深爱婷婷| 亚洲精品国产精品乱码不99| 精品国产V无码大片在线观看 | 叫吧宝贝我想听你叫什么| 亚洲成在人线视AV| 精品无码人妻一区二区免费蜜桃| 亚洲午夜精品久久久久久APP | 日本在线观看母与子| 成熟闷骚女邻居引诱2| 搡老女人ⅩXXX搡老女人电影看| 动漫人物插画动漫人物的视频 | 亚洲AV中文无码字幕色最| 精品无码成人网站久久久久久 | 女人和拘做受A级毛片| 99国精产品灬源码1| 欧美胖老太牲交XXⅩXXX| 被义子侵犯的漂亮人妻中字| 日韩无码蜜桃视频| 国产激情一区二区三区小说 | 亚洲国产精品一区二区成人片不卡 | 成年女美黄网站大全免费播放 | 久久久国产精品VA麻豆| 中国BGMBGMBGM老妇和青年交| 男人用嘴添女人私密视频| OLDMACDONALD老人大包| 少妇高潮流白浆在线观看| 国产精品无卡毛片视频| 亚洲国产AV一区二区三区丶| 久久久久影院美女国产主播| 97成人碰碰久久人人超级碰OO| 人人人澡人人人妻人人人精品| 国产AV无码专区国产乱码| 亚洲AⅤ天堂AV天堂无码| 久久99精品久久久久久HB无码| 岳打开双腿开始配合交换| 欧洲熟妇色XXXX欧美老妇性| 公交车被多男摁住灌浓精| 亚洲AV第一成肉网肉片AV| 久久久久久国产精品免费免费| 18禁丝瓜视频安卓版| 日本在线视频WWW色| 国产精品自在在线午夜出白浆| 亚洲精品无码一区二区AⅤ污美国 亚洲精品无码一区二区AⅤ污 | 韩国理论电费2023最| 一进一出一爽又粗又大| 欧美亚洲国产片在线播放| 国产999精品成人网站| 亚洲阿V天堂无码2020| 蜜臀AV性久久久久蜜臀AⅤ| 成人国产一区二区精品小说| 小SB是不是想被C了| 久久亚洲春色中文字幕久久久| а√在线官网在线| 午夜宅男在线永久免费观看网| 久久精品国产一区二区电影| JAPANESE五十路熟妇| 无码H肉动漫在线观看| 久久国产色AV免费看| 啊灬啊灬啊灬快高潮了网站| 午夜亚洲AⅤ无码高潮片在线观看| 久久久WWW成人免费精品| 奇米精品视频一区二区三区| 国产SM调教视频在线观看| 亚洲乱人伦中文字幕无码| 欧美黑人暴力深喉囗交| 国产成人A在线观看视频免费| 亚洲国产欧美日韩精品一区二区三 | 亚洲AV无码久久久久久精品同性 | 18一20亚洲GAY无套| 天天摸夜夜添狠狠添婷婷| 久久精品国产精品亚洲下载| となりの家のネツト在线| 美女脱个精光扒开尿口图片无遮挡 | 秋霞鲁丝片成人无码| 国产呻吟久久久久久久92| 中文无码一区二区三区在线观看| 日日AV拍夜夜添久久免费| 娇妻被黑人杂交下呻吟| A阿V天堂亚洲阿∨天堂在线| 午夜无码伦费影视在线观看果冻| 麻豆国产蜜桃臀视频在线观看 | 亚洲乱色熟女一区二区三区麻豆| 欧美丰满熟妇XX猛交| 国产日产欧产精品精品蜜芽| 18VIDEOSEX性欧美| 无人区码一码二码三码在线| 免费观看电视在线高清| 国产高清中文版HD中字| 野花日本中文版免费观看| 色婷婷AV一区二区三区在线观看| 久久国产免费直播| 厨房里的激战2类型| 亚洲自偷图片自拍图片| 少女たちよ在线观看动漫4集免费| 久久精品日日躁夜夜躁| 丰满少妇发泄14P| 伊人久久大香线蕉AV不变影院 | 无遮挡亲胸捏胸免费视频| 免费人成网WW555KKK在线| 国产精品亚洲一区二区无码 | 少女たちよ在线观看动漫| 久章草在线毛片视频播放| 国产成人无码18禁午夜福利免费| 中文字幕AV免费专区| 小SAO货都湿掉了高H奶头好硬| 欧美人妻少妇精品久久黑人| 韩漫漫画在线观看页面免费漫画入 | 八戒八戒神马影院在线电影4| 亚洲精品无码不卡在线播HE | 亚洲精品高清国产一久久| 日韩AV在线一区二区| 久久婷婷成人综合色综合| 国产精品久久久久蜜芽| AV无码波多野结衣| 亚洲欧美国产免费综合视频| 搡老女人P老熟妇老熟女| 噜噜久久噜噜久久鬼88| 国产强被迫伦姧在线观看无码| T66Y地址一地址二满18周岁| 亚洲色国产欧美日韩| 伸进衣服里吃奶捏胸视频| 嫩草伊人久久精品少妇AV| 精品国产精品久久一区免费式| 高清欧美性猛交XXXX黑人猛交| 中文字幕在线观看亚洲日韩| 亚洲VA中文字幕无码一区| 少妇被粗大的猛烈进出69影院 | 999久久久国产精品消防器材| 亚洲成A人片77777国产| 少妇粉嫩小泬白浆流出| 欧美极品在线观看| 久久WWW免费人成_看片中文| 国产国拍亚洲精品MV在线观看| TOUGHTESTED硬汉系列| 一边下奶一边吃面膜视频讲解图片 | 亚洲AV片无码久久尤物| 日日狠狠久久偷偷色综合免费| 妺妺窝人体色77777777| 精品久久久久久亚洲综合网| 国产黄A三级三级三级| 被老外添嫩苞添高潮NP视频 | 国产MV高清砖码2022| SEERX性欧美| 中国少妇的BBWWBBWW| 亚洲国产精品久久久久制服| 透过校服的乳尖 揉捏| 人人澡人摸人人添| 麻豆久久亚洲AV成人无码电影| 京东影业JD008苏小小| 国产精品美女久久久久| 粗大黑人巨精大战欧美成人| GAYFUCKⅩⅩⅩⅩHD警察| 与亲女洗澡时伦了毛片| 亚洲国产成人久久综合一区77| 无码免费毛片手机在线无卡顿 | 国产精品国产三级国产A| 成人黄网站高清免费视频| 97热久久免费频精品99| 又大又粗欧美成人网站| 亚洲欧洲综合有码无码| 免费高清中文字幕MV| 久久久久人妻精品一区| 精产国品一二三产区区别在哪儿 | 我和大佬的365天| 日日噜噜夜夜狠狠久久无码区| 欧美一区二区三区久久综合| 哪种女人弄进去最舒服| 久久婷婷五月综合色和啪| 九九精品99久久久香蕉| 黑巨人的又黑又大又长| 国产日产免费高清欧美一区| 国产激情一区二区三区| 国产AV无码专区亚汌A√| 大胆顶级欧美艺术图片| 草草CCYY免费看片线路| ZOOM另一类ZZO0| CHINESE性老妇老女人| 337P日本欧洲亚洲大胆裸体艺| 真人无码作爱免费视频禁HNN| 野兽的夜晚第四季忘不掉的前任 | 大炕上的肉体交换农村乱睡| 巴西大肥熟女毛茸茸| AV片在线观看网站免费| 97一期涩涩97片久久久久久久| 中文字幕乱偷无码av先锋蜜桃| 岳丰满多毛的大隂户| 在线天堂中文在线资源网| 在线天堂おっさんとわたし| 影音先锋女人AV鲁色资源网久久| 一本无线乱码不卡一二三四|