亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁(yè) > 開(kāi)發(fā) > Java > 正文

關(guān)于JAVA的三個(gè)基礎(chǔ)性問(wèn)題

2023-06-11 14:56:24
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

對(duì)于這個(gè)系列里的問(wèn)題,每個(gè)學(xué)Java的人都應(yīng)該搞懂。當(dāng)然,如果只是學(xué)Java玩玩就無(wú)所謂了。如果你認(rèn)為自己已經(jīng)超越初學(xué)者了,卻不很懂這些問(wèn)題,請(qǐng)將你自己重歸初學(xué)者行列。
問(wèn)題一:我聲明了什么! 
String s = "Hello world!";
許多人都做過(guò)這樣的事情,但是,我們到底聲明了什么?回答通常是:一個(gè)String,內(nèi)容是“Hello world!”。這樣模糊的回答通常是概念不清的根源。如果要準(zhǔn)確的回答,一半的人大概會(huì)回答錯(cuò)誤。

這個(gè)語(yǔ)句聲明的是一個(gè)指向?qū)ο蟮囊?,名?ldquo;s”,可以指向類(lèi)型為String的任何對(duì)象,目前指向"Hello world!"這個(gè)String類(lèi)型的對(duì)象。這就是真正發(fā)生的事情。我們并沒(méi)有聲明一個(gè)String對(duì)象,我們只是聲明了一個(gè)只能指向String對(duì)象的引用變量。所以,如果在剛才那句語(yǔ)句后面,如果再運(yùn)行一句:
String string = s;
我們是聲明了另外一個(gè)只能指向String對(duì)象的引用,名為string,并沒(méi)有第二個(gè)對(duì)象產(chǎn)生,string還是指向原來(lái)那個(gè)對(duì)象,也就是,和s指向同一個(gè)對(duì)象。
問(wèn)題二:"=="和equals方法究竟有什么區(qū)別?

==操作符專(zhuān)門(mén)用來(lái)比較變量的值是否相等。比較好理解的一點(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ù)前一帖說(shuō)過(guò),對(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)的類(lèi)沒(méi)有覆蓋equals方法,那你的類(lèi)使用equals和使用==會(huì)得到同樣的結(jié)果。同樣也可以看出,Object的equals方法沒(méi)有達(dá)到equals方法應(yīng)該達(dá)到的目標(biāo):比較兩個(gè)對(duì)象內(nèi)容是否相等。因?yàn)榇鸢笐?yīng)該由類(lèi)的創(chuàng)建者決定,所以O(shè)bject把這個(gè)任務(wù)留給了類(lèi)的創(chuàng)建者。

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

Class Monster{

private String content;

...

boolean equals(Object another){ return true;}

}

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

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

問(wèn)題三:String到底變了沒(méi)有?

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

String s = "Hello";

s = s + " world!";

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

通過(guò)上面的說(shuō)明,我們很容易導(dǎo)出另一個(gè)結(jié)論,如果經(jīng)常對(duì)字符串進(jìn)行各種各樣的修改,或者說(shuō),不可預(yù)見(jiàn)的修改,那么使用String來(lái)代表字符串的話(huà)會(huì)引起很大的內(nèi)存開(kāi)銷(xiāo)。因?yàn)镾tring對(duì)象建立之后不能再改變,所以對(duì)于每一個(gè)不同的字符串,都需要一個(gè)String對(duì)象來(lái)表示。這時(shí),應(yīng)該考慮使用StringBuffer類(lèi),它允許修改,而不是每個(gè)不同的字符串都要生成一個(gè)新的對(duì)象。并且,這兩種類(lèi)的對(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)存開(kāi)銷(xiāo)大,并且沒(méi)有意義,因?yàn)镾tring對(duì)象不可改變,所以對(duì)于內(nèi)容相同的字符串,只要一個(gè)String對(duì)象來(lái)表示就可以了。也就說(shuō),多次調(diào)用上面的構(gòu)造器創(chuàng)建多個(gè)對(duì)象,他們的String類(lèi)型屬性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ì)象,無(wú)論內(nèi)容是否相同。

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

發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
成人在线观看亚洲| 精品欧美一区二区久久久久| 黄色一级片免费播放| 国产精品66部| 亚洲精品成人悠悠色影视| 羞羞答答国产精品www一本| 天天插天天狠天天透| 国产精品久久久久9999| 手机看片福利在线| 国产精品久久久久久av下载红粉| 亚洲视频电影| 天堂影视av| 色xxx在线播放| 欧美肥老妇视频| 看全色黄大色大片免费久久久| 久久久久黄色片| 日本精品在线| 久久久国产成人精品| 四虎4hutv紧急入口| 国内外成人在线视频| 三级网站视频在在线播放| 欧美成人激情视频免费观看| 欧美在线视频日韩| 欧美精品一区二区三区蜜臀| 四虎wwwcom| 国产一区二区三区在线播放免费观看| 看高清中日韩色视频| 亚洲精品播放| 午夜影院欧美| 精品成人一区| 欧美一区二区啪啪| 一区二区三区在线免费观看视频| 四虎影视国产精品| 欧美成人久久久| 国产99视频在线| 国产欧美日韩在线视频| 精品国产乱码久久久久久鸭王1| 国产性生交xxxxx免费| 日韩久久免费视频| 欧美日韩国产中文精品字幕自在自线| 激情五月五月婷婷| 成人午夜电影免费在线观看| 影音先锋国产资源站| 国产激情欧美| 丝袜足控免费网站xx网站| 老牛国内精品亚洲成av人片| 天天操夜夜操天天射| 韩国av电影在线观看| 国产精品天天看天天狠| 真不卡电影网| 日韩精品有码在线观看| 国产精品情趣视频| 影音先锋5566资源站| 欧美剧情电影在线观看完整版免费励志电影| 99热国产在线中文| 理论电影国产精品| 黑人巨大精品欧美一区二区奶水| 日本中文字幕中出在线| 国产亚洲欧美精品久久久www| 久久一区二区三区av| 国产精品天天看天天狠| 日韩国产在线不卡视频| 欧美日韩精品一区二区三区蜜桃| 奇米四色中文综合久久| 国产在线一区二区视频| 国产三级理论片| 国产一级淫片久久久片a级| 日韩高清免费av| 欧美色综合久久| 公共露出暴露狂另类av| 黄色三级网站在线观看| 亚洲色欲综合一区二区三区| 婷婷综合社区| 中文字幕在线视频免费| a优女a优女片| 欧美网站大全在线观看| a视频在线免费看| 少妇**av毛片在线看| 同房视频网站| 欧美婷婷久久五月精品三区| 中文字幕在线观看第三页| 黄色资源在线看| 亚洲欧洲美洲在线综合| 久久亚洲一区二区三区四区五区高| 欧美大黄免费观看| 精品福利一区二区三区| 亚洲一区二区视频| 奇米视频7777| 美女网站久久| 亚洲人精选亚洲人成在线| 最新av免费在线观看| 色一情一乱一乱一区91| 天堂av在线免费观看| 国产探花在线观看| 亚洲乱码一区| 中文字幕a在线观看| 久久久精品人妻一区二区三区四| 婷婷综合久久中文字幕蜜桃三电影| 激情综合五月婷婷| 丁香花在线电影小说观看| 蜜臀在线免费观看| 国产999精品| 性爱视频在线播放| 国产999久久久| 免费观看成人在线视频| 精品国产乱码久久久久夜深人妻| 中文字幕一区二区三区最新| 日韩三级免费看| 一区在线观看视频| 色资源网在线观看| 中文日本高清免费| 欧美激情一区二区三级高清视频| av影院午夜一区| 久久综合激情| 国产视频一区二区| 92福利视频午夜1000合集在线观看| 污污的视频在线免费观看| 国产二区精品| 欧美xfplay| 少妇愉情理伦三级| 欧美日韩aaa| av中文字幕在线观看| 亚洲一区制服诱惑| 一区二区日韩在线观看| 日韩精品在线一区二区| 精品在线观看一区二区| 亚洲美女视频网| 色久视频在线观看| 亚洲综合av一区二区三区| 欧美午夜女人视频在线| 黄色av网站免费在线观看| 国产高潮视频在线观看| 日韩av中文字幕在线播放| 超黄网站在线观看| 蜜臀av一区二区三区有限公司| 日本v片在线免费观看| 奇米精品一区二区三区在线观看一| 欧美精品亚洲精品| 91精品国产色综合久久| 成人精品一区二区三区校园激情| 色婷婷狠狠五月综合天色拍| 国产一区二区99| 中文字幕欧美日韩一区| 日韩在线观看视频一区| 无码国产色欲xxxx视频| 日韩一本大道| 麻豆精品91| 一起操在线观看| 国产精品久久9| 在线色欧美三级视频| 欧美电影影音先锋| av综合网页| 911av视频| 欧美一级黄色片视频| 自拍偷拍亚洲欧美日韩| 欧美精品videos性欧美| 国产成人高清精品免费5388| 亚洲熟妇av一区二区三区| 蜜臀av国产精品久久久久| 欧美xfplay| 欧美xxxx少妇| 丝袜美腿玉足3d专区一区| 在线观看精品视频一区二区三区| 欧美xxx.com| 二区三区四区高清视频在线观看| 先锋影音男人av资源| 久久视频在线观看| 91毛片在线观看| 亚洲国产精品久久久久婷婷软件| 老司机在线看片网av| 欧美成人精品一级| 99精品欧美一区| 一区三区三区不卡| 免费男女羞羞的视频网站中文字幕| 色婷婷综合视频在线观看| 欧美日韩视频在线观看一区二区三区| 天天操夜夜逼| jizzjizz视频| 成人久久在线| 15—17女人毛片| 成人午夜888| 国产在线视频欧美一区二区三区| 青青草原av在线| 中文字幕在线观看免费视频| www.黄色在线| av影音在线| 在线综合欧美| 一区二区国产精品| 第一社区sis001原创亚洲| 国产亚洲精aa在线看| 伊人影院在线观看| wwwxxxx在线观看| 青青草国产免费一区二区下载| 国产午夜精品理论片a级探花| 国产亚洲人成网站在线观看| 国产美女特级嫩嫩嫩bbb片| 亚洲午夜久久久久久尤物| 少妇真人直播免费视频| 亚欧视频在线观看| 国产一二三av| 男男电影完整版在线观看| 国模一区二区三区私拍视频| 色综合久久久888| 亚洲日本一区二区三区| 国产99精品在线观看| 亚洲乱码一区二区三区| 99视频高清| 4438全国成人免费| 亚洲综合天堂网| 91av精品| 97视频在线免费观看| 欧美二区在线播放| 国产日韩欧美一二三区| 日本中文字幕一区二区| 国产精品不卡一区二区三区在线观看| 久久99国产综合精品女同| 国产成人亚洲精品自产在线| 亚洲欧洲av在线| 精品人妻人人做人人爽| 婷婷成人基地| 91激情在线| 日韩免费电影| 米奇777在线影院线| 国产裸体舞一区二区三区| 日本少妇一区二区| 亚洲国产av一区二区三区| 国产乱精品一区二区三区| 亚洲精品国产熟女久久久| 精品人妻一区二区三区麻豆91| 日韩精品每日更新| 亚洲国产视频网站| 精品久久久久久久一区二区蜜臀| 91av com| 中文字幕av在线一区二区三区| 亚洲激情图片| 久久久久久国产| 亚洲成人1区| 日韩一区二区三区国产| 在线看免费av| 国产精品久久视频| 男女啊啊啊视频| 亚洲免费色视频| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 三级全黄视频| 日韩xxxxxxxxx| 美脚恋feet久草欧美| 色综合久久网女同蕾丝边| 狠狠色狠色综合曰曰| 免费99精品国产自在在线| 久久亚洲AV成人无码国产野外| 日韩大片在线观看| 国产精品第100页| 欧美亚洲视频一区二区| 高清一区二区三区| 六月婷婷中文字幕| 欧美三级韩国三级日本一级| 中文字幕色av一区二区三区| 日韩在线欧美| 精品免费国产二区三区| 麻豆电影传媒二区| 亚洲成人先锋电影| 四虎中文字幕| 最近中文字幕在线| 国产高中女学生第一次| 在线观看日本一区二区| 91精品少妇一区二区三区蜜桃臀| 午夜精品久久久久久久爽| 久久只精品国产| 欧美亚洲日本一区二区三区| 一区二区三区四区国产精品| 欧美一级欧美三级在线观看| 丁香花在线高清完整版视频| www.国产一区| 57pao成人永久免费| 久久精品青青大伊人av| 欧美日韩免费不卡视频一区二区三区| jizzjizzjizz亚洲女| 好吊妞无缓冲视频观看| 日批视频在线免费看| 国产伦精品一区二区三区照片| 最新亚洲国产| 欧美区高清在线| 95视频在线观看| 成人精品国产一区二区4080| 毛片在线网站| 国产成人夜色高潮福利影视| 日本美女一区二区三区| 久久久国产精品亚洲一区| 亚洲一区在线日韩在线深爱| 成年女人在线看片| 国产高清自拍视频| 男男h黄动漫啪啪无遮挡软件| 亚洲av中文无码乱人伦在线视色| 亚洲午夜精品久久久中文影院av| 亚洲午夜小视频| 国产激情视频在线播放| 欧美日韩精品一区二区在线播放| 亚州av中文字幕在线免费观看| 91精品国自产在线偷拍蜜桃| 日韩av免费网址| 韩国福利视频一区| 欧美男女性生活在线直播观看| 国产91视频在线| 精品国产免费观看一区| 亚洲国产精品久久人人爱蜜臀| 国产真人无码作爱视频免费| 亚洲最大福利视频网| 另类综合图区| 在线不卡日本v二区707| 影音先锋日韩精品| 99视频免费观看蜜桃视频| 在线中文资源天堂| 午夜免费看视频| 性插视频在线观看| 日韩欧美亚洲日产国产| 黄色动漫在线免费看| 中文字幕欧美日本乱码一线二线| 久久精品成人欧美大片| 亚州视频一区二区三区| 国产欧美一区二区三区在线看| 91网站观看| 精品国产亚洲一区二区三区| 超碰在线观看免费版| 午夜视频在线| 91制片厂毛片| 中文字幕久久网| 亚洲一二三av| 亚洲.国产.中文慕字在线|