更新時(shí)間:2020-11-11 17:46:36 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽2251次
面向?qū)ο笠恢笔荍ava里面的重點(diǎn)學(xué)習(xí)內(nèi)容,也是Java語(yǔ)言的重要特性之一。面向?qū)ο笫窍鄬?duì)于面向過(guò)程來(lái)講的,面向?qū)ο蠓椒ǎ严嚓P(guān)的數(shù)據(jù)和方法組織為一個(gè)整體來(lái)看待,從更高的層次來(lái)進(jìn)行系統(tǒng)建模,更貼近事物的自然運(yùn)行模式。本文為大家送出小編精心準(zhǔn)備的福利——10道經(jīng)典Java面向?qū)ο竺嬖囶}。
1、super()與 this()的區(qū)別?
This():當(dāng)前類的對(duì)象,super 父類對(duì)象。
Super():在子類訪問(wèn)父類的成員和行為,必須受類繼承規(guī)則的約束
而 this 他代表當(dāng)前對(duì)象,當(dāng)然所有的資源都可以訪問(wèn).
在構(gòu)造函數(shù)中,如果第一行沒(méi)有寫(xiě) super(),編譯器會(huì)自動(dòng)插入.但是如果父類沒(méi)有不帶參數(shù)的構(gòu)
造函數(shù),或這個(gè)函數(shù)被私有化了(用 private 修飾).此時(shí)你必須加入對(duì)父類的實(shí)例化構(gòu)造.而 this 就
沒(méi)有這個(gè)要求,因?yàn)樗旧砭瓦M(jìn)行實(shí)例化的構(gòu)造.
而在方法中 super 和 this 使用的方法就差不多了.只不過(guò) super 要考慮是否能訪問(wèn)其父類的資源。
2、如何聲名一個(gè)靜態(tài)塊?靜態(tài)塊有什么好處
在類中方法外聲明 static關(guān)鍵字+代碼塊,對(duì)于一些必須要初始化的代碼,必須是寫(xiě)在靜態(tài)塊里面,如果寫(xiě)在構(gòu)造器里面,有多個(gè)構(gòu)造器的時(shí)候不一定執(zhí)行初始化.
3、作用域 public,protected,private,以及不寫(xiě)時(shí)的區(qū)別?
Public:不同包、同一包、類內(nèi)都可用
Private:類內(nèi)
Protected: 不同包的子類、同一包、類內(nèi)都可用
不寫(xiě)時(shí):同一包
4、什么是 java 序列化,如何實(shí)現(xiàn) java 序列化?(寫(xiě)一個(gè)實(shí)例)
序列化:
可以將一個(gè)對(duì)象保存到一個(gè)文件,所以可以通過(guò)流的方式在網(wǎng)絡(luò)上傳輸,可以將文件的內(nèi)
容讀取,轉(zhuǎn)化為一個(gè)對(duì)象。
處理對(duì)象流的機(jī)制,所謂對(duì)象流也就是將對(duì)象的內(nèi)容進(jìn)行流化。可以對(duì)流化后的對(duì)象進(jìn)行
讀寫(xiě)操作,也可將流化后的對(duì)象傳輸于網(wǎng)絡(luò)之間。序列化是為了解決在對(duì)對(duì)象流進(jìn)行讀寫(xiě)操作
時(shí)所引發(fā)的問(wèn)題。
序列化的實(shí)現(xiàn):
將需要被序列化的類實(shí)現(xiàn) Serializable 接口,該接口沒(méi)有需要實(shí)現(xiàn)的方法,implements
Serializable 只是為了標(biāo)注該對(duì)象是可被序列化的,然后使用一個(gè)輸出流(如:
FileOutputStream) 來(lái)構(gòu)造一個(gè) ObjectOutputStream( 對(duì)象流 ) 對(duì) 象 , 接 著 , 使 用
ObjectOutputStream 對(duì)象的 writeObject(Object obj)方法就可以將參數(shù)為 obj 的對(duì)象寫(xiě)出
(即保存其狀態(tài)),要恢復(fù)的話則用輸入流。
5、String與StringBuffer、StringBuilder的區(qū)別?
String 是不可變的,可以直接使用它的方法 用來(lái)創(chuàng)建字符串,而 StringBuffer、StringBuilder無(wú)論怎么修改都是一個(gè)對(duì)象,如果在字符串改變或者迭代改變的情況下Stringbuffer比String運(yùn)行快,StringBuilder比StringBuffer更加快捷,但是StringBuilder線程不安全
6、寫(xiě)出String類常見(jiàn)的5個(gè)方法,并解釋
indexOf():返回指定字符串在該字符串出現(xiàn)的序列
startsWith():判斷該字符串是否以指定字符開(kāi)始
concat() :將指定字符串連接在該字符串的結(jié)尾
length():返回字符串的長(zhǎng)度
subString:返回該字符串從索引開(kāi)始 結(jié)束于字符串末尾 或者指定索引的一個(gè)子字符串
7、重載與重寫(xiě)的區(qū)別?
重載發(fā)生在同一個(gè)類,不同的方法里面。 重寫(xiě)發(fā)生在父子類中,參數(shù)完全相同的方法里面。
重載參數(shù)不同,而重寫(xiě)參數(shù)相同且返回類型相同。
方法名相同,重寫(xiě)override是父類與子類之間多態(tài)性的一種表現(xiàn),重載是一個(gè)類中多態(tài)性的一種表現(xiàn)。
8、抽象類和接口的區(qū)別?
(1)接口可以被多重 implements,抽象類只能被單一 extends
(2)接口只有定義,抽象類可以有定義和實(shí)現(xiàn)
(3)接口的字段定義默認(rèn)為:public static final, 抽象類字段默認(rèn)是"friendly"(本包可見(jiàn))
當(dāng)功能需要累積時(shí)用抽象類,不需要累積時(shí)用接口。
9、什么是類的反射機(jī)制?
通過(guò)類(Class 對(duì)象),可以得出當(dāng)前類的 fields、method、construtor、interface、superClass、
modified 等,同是可以通過(guò)類實(shí)例化一個(gè)實(shí)例、設(shè)置屬性、喚醒方法。Spring 中一切都是
反射、struts、hibernate 都是通過(guò)類的返射進(jìn)行開(kāi)發(fā)的。
10、如何獲取某個(gè)日期是當(dāng)月的最后一天?
當(dāng)前日期加一天,若當(dāng)前日期與結(jié)果的月份不相同,就是最后一天。
取下一個(gè)月的第一天,下一個(gè)月的第一天-1
public static void main(String[] args)
{
Calendar c=Calendar.getInstance();
c.set(Calendar.YEAR,2004);
c.set(Calendar.MONTH,0);
c.set(Calendar.DAY_OF_MONTH,30);
Calendar c1=(Calendar)c.clone();
System.out.println(c.get(Calendar.YEAR)+" "+(c.get(Calendar.MONTH)+1)+"
"+c.get(Calendar.DAY_OF_MONTH));
c.add(Calendar.DAY_OF_MONTH,1);
if(c.get(Calendar.MONTH)!=c1.get(Calendar.MONTH))
{
System.out.println("是最后一天");
}
else
{
System.out.println("不是取后一天");
}
}
以上就是小編為大家精心挑選的10道經(jīng)典Java面向?qū)ο竺嬖囶},雖然不能概括整個(gè)面向?qū)ο蟮闹R(shí)點(diǎn),但籠統(tǒng)地兼顧了面向?qū)ο蟮拇蟛糠种攸c(diǎn)內(nèi)容。想要更加系統(tǒng)地練習(xí)Java面向?qū)ο竺嬖囶}還是得看本站的海量高質(zhì)量Java面試題和答案分析,幫你提升Java面試題實(shí)戰(zhàn)能力。
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)
初級(jí) 202925
初級(jí) 203221
初級(jí) 202629
初級(jí) 203743