面向?qū)ο蟮奶卣?/p>
面向?qū)ο缶幊陶Z(yǔ)言有封裝吧寺、繼承隅津、抽象、多態(tài)4個(gè)主要的特征绣溜。
1)封裝:封裝是保證軟件部件具有優(yōu)良的模塊性的基礎(chǔ)慷彤,封裝的目標(biāo)就是要實(shí)現(xiàn)軟件部件的“高內(nèi)聚、低耦合”怖喻,防止程序相互依賴而帶來(lái)的變動(dòng)影響底哗。在面向?qū)ο蟮木幊陶Z(yǔ)言中,對(duì)象是封裝的基本單位锚沸。面向?qū)ο蟮姆庋b就是把描述一個(gè)對(duì)象的屬性和行為的代碼封裝到一個(gè)“模塊”中跋选,即一個(gè)類中。只要把變量和訪問這個(gè)變量的方法放在一起咒吐,將一個(gè)類中的成員變量全部定義為私有的野建,只有這個(gè)類的方法可以訪問属划,這就基本上實(shí)現(xiàn)了對(duì)象的封裝。
2)抽象:抽象就是找出一些事物的相似和共性之處候生,然后將這些事物歸為一個(gè)類同眯,這個(gè)類只考慮這些事物的相似和共性之處,并且會(huì)忽略與當(dāng)前主題和目標(biāo)無(wú)關(guān)的哪些部分唯鸭,將注意力集中在與當(dāng)前目標(biāo)有關(guān)的方面须蜗。
3)繼承:繼承是子類自動(dòng)共享父類數(shù)據(jù)和方法的機(jī)制,這是類之間的一種關(guān)系目溉,提高了軟件的重用性和可擴(kuò)展性明肮。
4)多態(tài):多態(tài)是指程序中定義的引用變量所指向的具體類型和通過(guò)該引用變量發(fā)出的方法調(diào)用在編程時(shí)并不確定,而是在程序運(yùn)行時(shí)才確定缭付,即一個(gè)引用變量到底會(huì)指向哪個(gè)類的實(shí)例對(duì)象柿估,該引用變量發(fā)出的方法調(diào)用到底是哪個(gè)類中實(shí)現(xiàn)的方法,必須在程序運(yùn)行期間才能決定陷猫。因?yàn)樵诔绦蜻\(yùn)行時(shí)才能確定具體的類秫舌,這樣,不用修改源程序代碼绣檬,就可以讓引用變量綁定到各種不同的類實(shí)現(xiàn)上足陨,從而導(dǎo)致該引用調(diào)用的具體方法隨之改變,即不修改程序代碼就可以改變程序運(yùn)行時(shí)所綁定的具體代碼娇未,讓程序可以選擇多個(gè)運(yùn)行狀態(tài)墨缘,這就是多態(tài)性。方法的重寫Overriding和重載Overloading是Java多態(tài)性的不同表現(xiàn)零抬。重寫Overriding是父類與子類之間多態(tài)性的一種表現(xiàn)镊讼,、重載Overloading是一個(gè)類中多態(tài)性的一種表現(xiàn)媚值。
Integer和int的區(qū)別
1)int是java提供的8中原始數(shù)據(jù)類型之一狠毯,java為每個(gè)呀un是數(shù)據(jù)類型提供了封裝類,Integer是java為int提供的封裝類(封裝類=數(shù)據(jù)+操作)褥芒。
2)int的默認(rèn)值為0嚼松,而Integer的默認(rèn)值為null,即Integer可以區(qū)分出為賦值和值為0的區(qū)別锰扶,int無(wú)法表達(dá)出為賦值的情況献酗。例如:想要表達(dá)出沒有參加考試和考試成績(jī)?yōu)?的區(qū)別,只能使用Integer坷牛。在JSP中Integer的默認(rèn)值為null罕偎,所以用EL表達(dá)式在文本框中顯示時(shí),值為空表字符串京闰,而int默認(rèn)值為0颜及,所以用EL表達(dá)式在文本框中顯示時(shí)甩苛,結(jié)果為0,所以俏站,int不適合作為WEB層的表單數(shù)據(jù)的類型讯蒲。
3)Integer提供了一系列與int相關(guān)的操作方法。
“==”和equals方法的區(qū)別
1)“==”操作符是用來(lái)比較連個(gè)變量的值是否相等肄扎,也就是用來(lái)比較變量所對(duì)應(yīng)的內(nèi)存中所存儲(chǔ)的數(shù)值是否相同墨林,要比較兩個(gè)基本類型的數(shù)據(jù)或兩個(gè)引用變量是否相等,只能用==操作符犯祠。
2)equals方法是用來(lái)比較兩個(gè)獨(dú)立對(duì)象的內(nèi)容是否相等旭等。
&與&&的區(qū)別
1)&和&&都可以用作邏輯與的運(yùn)算符,表示邏輯與(and)衡载,當(dāng)運(yùn)算符兩邊的表達(dá)式的結(jié)果都為true時(shí)搔耕,整個(gè)運(yùn)算結(jié)果才為true,否則痰娱,只要有一方為false度迂,則結(jié)果為false。
2)&&還具有短路的功能猜揪,即如果第一個(gè)表達(dá)式為false,則不再計(jì)算第二個(gè)表達(dá)式坛梁,例如而姐,對(duì)于if(str!=null&&!str.equals(“”))表達(dá)式,當(dāng)str為null時(shí)划咐,后面的表達(dá)式不會(huì)執(zhí)行拴念,所以不會(huì)出現(xiàn)NullPointerException如果將&&改為&,則會(huì)拋出NullPointerException異常褐缠。If(x==33&++y>0)y會(huì)增長(zhǎng)政鼠,If(x==33&&++y>0)不會(huì)增長(zhǎng)
3)&還可以用作位運(yùn)算符,當(dāng)&操作符兩邊的表達(dá)式不是boolean類型時(shí)队魏,&表示按位與操作公般,我們通常使用0x0f來(lái)與一個(gè)整數(shù)進(jìn)行&運(yùn)算,來(lái)獲取該整數(shù)的最低4個(gè)bit位胡桨,例如官帘,0x31&0x0f的結(jié)果為0x01。
String s="a"+"b"+"c"+"d";共創(chuàng)建了多少個(gè)對(duì)象昧谊?
只創(chuàng)建了一個(gè)String對(duì)象刽虹。
Java單例模式
概念:
java中單例模式是一種常見的設(shè)計(jì)模式,單例模式分三種:懶漢模式單例呢诬、餓漢模式單例涌哲、登記模式的那里三種胖缤。
單例模式有一下特點(diǎn):
1、單例類只能有一個(gè)實(shí)例阀圾。
2哪廓、單例類必須自己自己創(chuàng)建自己的唯一實(shí)例。
3稍刀、單例類必須給所有其他對(duì)象提供這一實(shí)例撩独。
單例模式確保某個(gè)類只有一個(gè)實(shí)例,而且自行實(shí)例化并向整個(gè)系統(tǒng)提供這個(gè)實(shí)例账月。