午夜伦伦-午夜毛片不卡高清免费-午夜毛片福利-午夜毛片在线观看-国产精品一二三区-国产精品一国产精品

將想法與焦點(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
国产精品香蕉成人网在线观看 | 天天摸天天做天天爽| 波多野42部无码喷潮| 人妻办公室内上司侵犯| らだ天堂√在线WWW| 清纯校花挨脔日常H惩罚视频| JZJZJZJZ日本L免费观看| 欧美做受三级级视频播放| H无码动漫在线观看网站| 欧美性色黄大片WWW喷水| YY6090青苹果影院| 日本丰满妇人成熟免费中文字幕| 班长哭着说不能再C了视频| 人体艺术大胆图片| 粗大的内捧猛烈进出A片男男小说| 日韩精品人妻系列无码专区免费| 丁香花在线电影小说| 四虎WWW永久在线精品| 国产极品视觉盛宴专区| 小诗的公交车日记第9章| 国精产品一品二品国精| 亚洲AV综合色区| 久久成人成狠狠爱综合网| 夜夜未满十八勿进的爽爽影院 | 国产69精品久久久久999小说| 色噜噜影院狠狠狠噜| 高清中文字幕成人AV| 无码中文人妻在线三区| 韩国三级L中文字幕无码| 亚洲欧洲日产国码无码久久99| 久久精品国产亚洲AVAPP下载| 曰批免费视频播放免费| 女性自慰网站免费观看W| JAPAN强要VIDEOD警妞| 日韩精品无码人成视频| 国产成人亚洲影院在线 | 可播放的免费男同GAY| 717影院理论午夜伦八戒| 人妻无码一区二区三区蜜桃| 国产92刮伦脏话对白| 性少妇中国内射XXXX狠干| 精品亚洲成A人片在线观看少妇| 英语老师的小兔子好大好软水| 男女裸体下面进入的免费视频| MM1313亚洲精品无码又大又| 日韩精品无码免费专区午夜不卡| 国产精品VA无码免费麻豆| 亚洲JIZZJIZZ少妇| 麻豆三级电影无码| 啊灬啊灬啊灬快灬高潮了女| 熟妇人妻中文A∨无码| 国内少妇人妻丰满AV| 一本一道AV中文字幕无码| 欧美另类精品黑人巨大| 国产99视频精品免费视频6| 亚洲AV无码乱码在线观看富二代 | 没带罩子让他吃了一天药会怎样 | 成人无码区免费AⅤ片丝瓜视频| 婷婷伊人久久大香线蕉AV| 黑人啊灬啊灬啊灬快灬深| 在线无码午夜福利高潮视频| 人妻无码ΑV中文字幕久久| 国产精品天干天干综合网| 亚洲色偷偷AV男人的天堂| 女人脱精光让人桶爽了| 国产chinese大学生Gay| 亚洲女同精品一区二区| 欧美午夜成人片在线观看| 国产成人精品亚洲午夜麻豆| 亚洲鲁丝片一区二区三区| 欧美黑人又大又粗XXXXX吞精| 公交车上售票员用B验票小镇| 亚洲国产欧洲综合997久久| 欧美操逼视频网站| 国产XXXX农村野外高潮HD发| 亚洲欧美成人在线| 人曾交互MOUSE农场| 国产女主播白浆在线看| 中国CHINESE壮男GⅤ军警| 日韩中文高清在线专区| 精品久久久无码中文字幕天天| 777777亚洲午夜成人| 熟女熟妇丰满自慰AV| 久久精品国产亚洲AV麻豆图片| MM131巨爆乳美女少妇动态图| 性色a∨精品高清在线观看| 免费人成网WW555| 国产激情一区二区三区| 在床上拔萝卜视频高清免费看| 日日躁夜夜躁狠狠躁| 久久99精品久久久久久| 边喂奶边中出的人妻| 亚洲国产精品日韩AV专区| 欧美日韩精品一区二区三区不卡| 国产欧美强奸激情| 91精品人妻一区二区三区| 偷拍与自偷拍亚洲精品| 久久亚洲SM情趣捆绑调教| 第一次挺进苏雨萌| 一对浑圆的胸乳被揉捏| 三级成人AV电影在线观看| 久久精品无码午夜福利理论片| 刺激战场老阿姨是谁啊| 亚洲熟妇无码久久精品疯| 日韩AV无码中文无码不卡电影 | 狠狠人妻熟妇av又粗又大| AV在线一区二区三区| 亚洲AV无码一区二区三区dv| 欧美日韩在大午夜爽爽影院| 国内精品久久久久久久影视| JAPANESE高潮尖叫| 亚洲国产AV一区二区三区四区| 啪啪啪1000免费观看| 精品高潮呻吟99AV无码| 成年女人免费观看播放视频| 亚洲无线一二三四区手机| 四虎影视新紧急入口| 免费无码又爽又刺激高潮软件| 国产无套内射普通话对白| JIZZ中国女人奶水多| 亚洲精品无码久久久久SM| 三上悠亚被弄到痉挛惨叫AV| 久久久99精品成人片| 国产98涩在线 | 欧洲| 377人体粉嫩噜噜噜| 亚洲AV日韩AⅤ无码网站| 人善交XUANWEN200| 开丫头小嫩苞疼死了| 国产口爆吞精在线视频| H纯肉无码精品动漫在线观看| 亚洲人成网站18禁止大| 天堂А√在线地址资源| 欧美高清视频手机在在线| 久久 国产 尿 小便 嘘嘘| 高潮毛片无遮挡高清免费| 16ⅤIDE0SEX性欧| 亚洲精品色午夜无码专区日韩| 四十如虎的丰满熟妇啪啪| 牛和人交VIDE欧关ⅩXOO| 精品国产三级A∨在线观看| 国产AV无码专区影视| CHINESEXXXXHD麻豆| 亚洲中字幕日产2021草莓| 无码人妻精品内射一二三AV| 人妻少妇精品无码专区二区| 久久亚洲AV无码精品色午夜 | 久久国产AVJUST麻豆| 国产精品毛片一区二区三区| AV无码人妻精品丰满熟妇区| 亚洲色18成人网站WWW| 午夜无码伦费影视在线观看| 日产精品一线二线三线芒| 妺妺窝人体色WWW写真| 精品无码黑人又粗又大又长AV | 性高朝久久久久久久3小时| 日产精品一线二线三线优势| 女人张开腿让男桶喷水高潮| 久久97人妻无码一区二区三区| 国产美女自卫慰黄网站| 丁香激情五月中文字幕亚洲| 99久久久无码国产精品免费| 夜夜爽夜夜叫夜夜高潮| 亚洲大胸美女被操喷水| 无码人妻丰满熟妇奶水区码| 日韩在线看片免费人成视频播放| 欧美乱大交XXXXX| 免费男人下部进女人下部视频| 精品亚洲自慰AV无码喷奶水| 国产又黄又爽又刺激的免费网址| 国产成人牲交在线观看视频| 拔萝卜全程不该盖被子怎么办| 中文字幕久久久人妻无码| 阳茎伸入女人的阳道免费视频| 亚洲AV无码专区色爱天堂| 我是你可爱的小猫| 色天使亚洲综合一区二区| 人人鲁人人莫人人爱精品| 乱人伦人成品精国产在线| 精品亚洲成a人无码成a在线观看| 国产亚洲精品岁国产微拍精品| 粉嫩av观看成人网站| 波多野结衣的电影| 阿公抱着我边摸边吃奶视频 | 无人区码一码二码高高| 色综合色欲色综合色综合色综合R| 人人妻人人狠人人爽| 欧美人与性动交a欧美精品| 免费国产成人AⅤ观看| 麻豆文化传媒精品一区观看| 久久人人做人人妻人人玩精品HD| 九九九九精品视频在线观看| 精产国品一二三产区区别在哪儿 | A级毛片免费观看在线| 最新国产乱人伦偷精品免费网站| 一区二区av在线| 亚洲综合区小说区激情区| 亚洲午夜理论片在线观看| 亚洲中文无码A∨在线观看| 亚洲愉拍99热成人精品热久久| 亚洲中文字幕无码中字 |