![Java面試問題筆記 (2018年)_第1頁](http://file4.renrendoc.com/view14/M01/0A/0F/wKhkGWaboeGAShvmAABz5LlL0Bw369.jpg)
![Java面試問題筆記 (2018年)_第2頁](http://file4.renrendoc.com/view14/M01/0A/0F/wKhkGWaboeGAShvmAABz5LlL0Bw3692.jpg)
![Java面試問題筆記 (2018年)_第3頁](http://file4.renrendoc.com/view14/M01/0A/0F/wKhkGWaboeGAShvmAABz5LlL0Bw3693.jpg)
![Java面試問題筆記 (2018年)_第4頁](http://file4.renrendoc.com/view14/M01/0A/0F/wKhkGWaboeGAShvmAABz5LlL0Bw3694.jpg)
![Java面試問題筆記 (2018年)_第5頁](http://file4.renrendoc.com/view14/M01/0A/0F/wKhkGWaboeGAShvmAABz5LlL0Bw3695.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Java面試問題
DONG
TableofContents
介紹
Java
請(qǐng)說一說Java
Java為什么是高效的?
列舉出2個(gè)IDE
面向?qū)ο蟮奶卣饔心男┓矫?/p>
JDKJREJVM
什么是對(duì)象(Object)?
一個(gè)類是由哪些變量構(gòu)成的
靜態(tài)變量和實(shí)例變量的區(qū)別?
封裝Encapsulation
多態(tài)Polymorphism
構(gòu)造器是否可以被override
接口Interface
接口和抽象的區(qū)別
基礎(chǔ)概念題
基礎(chǔ)程序題
super關(guān)鍵詞
super程序題
this程序題
抽象abstract
abstract相關(guān)問題
this()和super()在構(gòu)造體里怎么用?
Static關(guān)鍵字
Static相關(guān)問題
Singleton單例模式
hashcode和equal
==和equal的區(qū)另Ll
所有類的基類是哪個(gè)類?
Java支持多繼承嗎?
Path與Classpath?
反射機(jī)制
final關(guān)鍵字
一個(gè).java源文件是否可以包含多個(gè)類
&與&&
int與integer
integer通過==比較
作用域的區(qū)別
異常
error和exception?
Checked異常與Runtime異常
異常概念題
把對(duì)象聲明成異常
處理異常的方法
每一個(gè)try都必須有一個(gè)catch嗎?
try模塊里的return
final,finally,finalize的區(qū)另lj
Programme
輸出問題1
GabageCollection
heap和stack
GC就一定能保證內(nèi)存不溢出嗎?
字節(jié)流與字符流
Collection
ArrayList和Vector
HashMap和Hashtable
HashMapHashTableLinkedHashMapTreeMap
Collection相關(guān)問題
Multi-Thread
sleep。和wait。的區(qū)別
同步synchronized
如何實(shí)現(xiàn)muliti-thread?
Transient關(guān)鍵字
preemptivescheduling和timeslicing?
一個(gè)線程的初始狀態(tài)是什么?
synchronizedmethod和synchronizedstatement?
守護(hù)線程daemonthread?
所有的線程都必須實(shí)現(xiàn)哪個(gè)方法?
VisitorPattern
Problemonchain
字符串基礎(chǔ)問題
StringBuffcr相關(guān)問題
數(shù)組相關(guān)問題
序歹U化serialization
如何序列化一個(gè)對(duì)象到一個(gè)文件?
必須實(shí)現(xiàn)Serializable接口的哪個(gè)方法?
如何控制serialization的過程?
什么情況下要使用序列化?
Externalizable接口?
序列化時(shí)引用的處理?
序列化時(shí)要注意什么?
序列化時(shí)static域的處理?
InitializationandCleanup
JavaDataTypes
Run-TimeDataAreas
J2EE
什么是J2EE?
J2EE應(yīng)用的四個(gè)部分?
Whatdoesapplicationclientmodulecontain?
Whatdoeswebmodulecontain?
J2EE客戶端有哪些類型
Hibernate是什么??
什么是事務(wù)-transaction
什么是servlet?
創(chuàng)建servlet
Servlet必須實(shí)現(xiàn)什么接口?
Servlet生命周期?
JSP
JSP的生命周期?
JSP語法
JSPActions?
JSPtranslation?
Ear,Jar和War文件?
URI和URL?
DAO
Spring
什么是Spring?
使用spring的好處?
Spring都有哪些模塊?
什么是Spring的配置文件?
什么是依賴注入一DependencyInjection?
IoC的類型?
你更傾向于哪種DI
IoC有什么好處?
IoCcontainer是什么?
IoC容器的類型?
ApplicationCoctext的實(shí)現(xiàn)都有哪些?
BeanFactory與ApplicationCoctext?
什么是bean?
都有哪些beanscope?
Singletonbean是線程安全的嗎?
說下Boan的生命周期
什么是基于注釋的容器配置?
如何注入JavaCollection?
什么是自動(dòng)裝配
什么是AOP?
通知的類型?
Joinpoint?
Pointcut?
Introduction?
HowdoyouprovideconfigurationmetadatatotheSpringContainer?
Howdoaddabeaninspringapplication?
CanyouinjectnullandemptystringvaluesinSpring?
@Autowired@Inject@Resource
Hibernate
getand10ad
什么是SessionFactory?
SessionFactory是線程安全的嗎?
什么是Session?
sorted與orderedcollection
Whatisthefileoxtensionusedforhibernatemappingfile?
hibernate的三種狀態(tài)
Linux
查找文件
列出文件列表
SQL
設(shè)計(jì)一對(duì)一
設(shè)計(jì)一對(duì)多
設(shè)計(jì)多對(duì)多
都使用過哪些join?
innerjoin
Left/Rightjoin
Fulljoin
合并的問題
Unionall?
Where和Having
通酉己符wildcard?
Scrum
Scrum中的三大角色
What'ssprint?
Howtoscrum
Continuousintegration
Statement和preparedstatement?
Callablestatement
StoredProcedureandhowdoyoucallitinJDBC?
WhatdoestheClass.forNamc("MyClass")do?
ConnectionPooling?
WhatarethestepsintheJDBCconnection?
目金錄
介紹1.1
Java1.2
請(qǐng)說一說Java1.2.1
Java為什么是高效的?1.2.1.1
列舉出2個(gè)IDE1.2.1.2
面向?qū)ο蟮奶卣饔心男┓矫?.2.1.3
JDKJREJVM1.2.2
什么是對(duì)象(Object)?1.2.3
一個(gè)類是由哪些變量構(gòu)成的1.2.3.1
靜態(tài)變量和實(shí)例變量的區(qū)別?1.2.3.2
封裝Encapsulation1.2.4
多態(tài)Polymorphism1.2.5
構(gòu)造器是否可以被override1.2.5.1
接口Interface1.2.6
接口和抽象的區(qū)別1.2.6.1
基礎(chǔ)概念題1.2.6.2
基礎(chǔ)程序題1.2.6.3
super關(guān)鍵詞1.2.6.4
super程序題1.2.6.5
this程序題1.2.6.6
抽象abstract1.2.6.7
abstract相關(guān)問題1.2.6.8
this。和super。在構(gòu)造體里怎么用?1.2.6.9
Static關(guān)鍵字1.2.7
Static相關(guān)問題1.2.7.1
Singleton單例模式1.2.8
hashcode和equal1.2.9
==和equal的區(qū)別1.2.9.1
所有類的基類是哪個(gè)類?1.2.10
Java支持多繼承嗎?1.2.11
Path與Classpath?1.2.12
反射機(jī)制1.2.13
final關(guān)鍵字1.2.14
一個(gè).java源文件是否可以包含多個(gè)類1.2.15
&與&&1.2.16
int與integer1.2.17
integer通過==比較1.2.17.1
作用域的區(qū)別1.2.18
異常1.2.19
error和exception?1.2.19.1
Checked異常與Runtime異常1.2.19.2
異常概念題1.2.19.3
把對(duì)象聲明成異常L2.19.4
處理異常的方法1.2.19.5
每一個(gè)try者B必須有一個(gè)catch嗎?1.2.19.6
try模塊里的return1.2.19.7
final,finally,finalize的區(qū)另U1.2.20
Programme1.2.21
輸出問題11.2.21.1
GabageCollection1.2.22
heap和stack1.2.22.1
GC就一定能保證內(nèi)存不溢出嗎?1.2.22.2
字節(jié)流與字符流1.2.23
Collection1.2.24
ArrayList和Vector1.2.24.1
HashMap和Hashtable1.2.24.2
HashMapHashTableLinkedHashMapTreeMap1.2.24.3
Collection相關(guān)問題1.2.24.4
Multi-Thread1.2.25
sleep。和wait。的區(qū)別1.2.25.1
同步synchronized1.2.25.2
如何實(shí)現(xiàn)muliti-thread?1.2.25.3
Transient關(guān)鍵字1.2.25.4
preemptiveschoduling和timeslicing?1.2.25.5
一個(gè)線程的初始狀態(tài)是什么?1.2.25.6
synchronizedmethod和synchronizedstatement?
守護(hù)線程daemonthread?1.2.25.8
所有的線程都必須實(shí)現(xiàn)哪個(gè)方法?1.2.25.9
VisitorPattern1.2.26
Problemonchain1.2.27
字符串基礎(chǔ)問題1.2.27.1
StringBuffcr相關(guān)問題1.2.27.2
數(shù)組相關(guān)問題
序列化serialization1.2.28
如何序列化一個(gè)對(duì)象到一個(gè)文件?1.2.28.1
必須實(shí)現(xiàn)Serializable接口的哪個(gè)方法?
如何控制serialization的過程?1.2.28.3
什么情況下要使用序列化?1.2.28.4
Externalizable接口?1.2.28.5
序列化時(shí)引用的處理?1.2.28.6
序列化時(shí)要注意什么?1.2.28.7
序列化時(shí)static域的處理?1.2.28.8
InitializationandCleanup1.2.29
JavaDataTypes1.2.30
Run-TimeDataAreas1.2.31
J2EE1.3
什么是J2EE?1.3.1
J2EE應(yīng)用的四個(gè)部分?1.3.2
中hatdoesapplicationclientmodulecontain?1.3.2.1
Whatdoeswebmodulecontain?1.3.2.2
J2EE客戶端有哪些類型1.3.3
Hibernate是什么??1.3.4
什么是事務(wù)-transaction1.3.5
什么是servlet?1.3.6
創(chuàng)建servlet1.3.6.1
Servlet必須實(shí)現(xiàn)什么接口?1.3.6.2
Servlet生命周期?1.3.6.3
JSP1.3.7
JSP的生命周期?1.3.7.1
JSP語法1.3.7.2
JSPdeclarations?1.3.7.2.1
JSPexpressions?1.3.7.2.2
JSPDirectives?1.3.7.2.3
Typesofdirectivetags?1.3.7.2.3.1
and<%@includefile二,?,>?1.3.7.2.3.1.1
注釋的類型1.3.7.2.4
JSPActions?1.3.7.3
和response.sondRcdirect(url)?1.3.7.3.1
Scopeforthe<jsp:useBean>tag?-1.3.7.3.2
JSPtranslation?
Ear,Jar和War文件?1.3.8
URI和URL?1.3.9
DAO1.3.10
Spring1.4
什么是Spring?1.4.1
使用spring的好處?1.4.2
Spring都有哪些模塊?1.4.3
什么是Spring的配置文件?1.4.4
什么是依賴注入一DependencyInjection?1.4.5
IoC的類型?1.4.5.1
你更傾向于哪種DI1.4.5.2
IoC有什么好處?1.4.5.3
IoCcontainer是什么?1.4.6
IoC容器的類型?1.4.6.1
ApplicationContext的實(shí)現(xiàn)都有哪些?1.4.6.2
BeanFactory與ApplicationContext?1.4.6.3
什么是bean?1.4.7
都有哪些beanscope?1.4.7.1
Singletonbean是線程安全的嗎?1.4.7.2
說EBean的生命周期1.4.7.3
什么是基于注釋的容器配置?L4.7.4
如何注入JavaCollection?1.4.7.5
什么是自動(dòng)裝配1.4.8
什么是A0P?1.4.9
通知的類型?1.4.9.1
Joinpoint?1.4.9.2
Pointcut?1.4.9.3
Introduction?1.4.9.4
Whatdocsabeandefinitioncontain?1.4.10
HowdoyouprovideconfigurationmetadatatotheSpringContainer?1.4.11
Howdoaddabeaninspringapplication?1.4.12
WhatareinnerbeansinSpring?1.4.13
HowcanyouinjectJavaCollectioninSpring?1.4.14
Whatarethelimitationswithautowiring?1.4.15
CanyouinjectnullandemptystringvaluesinSpring?1.4.16
@Autowired@Inject?Resource1.4.17
Ilibcrnato1.5
getandload1.5.1
什么是ScssionFactory?1.5.2
SessionFactory是線程安全的嗎?1.5.2.1
什么是Session?1.5.2.2
sorted與orderedcollection1.5.3
Whatisthefileextensionusedforhibernatemappingfile?1.5.4
hibernate的三種狀態(tài)1.5.5
Linux1.6
查找文件1.6.1
列出文件列表1.6.2
SQL1.7
設(shè)^一^對(duì)一1.7.1
設(shè)計(jì)一對(duì)多1.7.2
設(shè)計(jì)多對(duì)多1.7.3
都使用過哪些join?1.7.4
innerjoin1.7.4.1
Left/Rightjoin1.7.4.2
Fulljoin1.7.4.3
合并的問題1.7.5
Unionall?1.7.5.1
Where和Having1.7.6
通配符wildcard?1.7.7
Scrum1.8
Scrum中的三大角色1.8.1
甲hat'ssprint?1.8.2
Howtoscrum1.8.3
Continuousintegration1.9
JDBC1.10
Statement和preparedstatomcnt?1.10.1
Callablestatement1.10.1.1
StoredProcedureandhowdoyoucallitinJDBC?1.10.2
WhatdoesthoClass.forName(〃MyClass〃)do?1.10.3
ConnectionPooling?1.10.4
WhatarethestepsintheJDBCconnection?1.10.5
Java面試筆記
我第一次pr
這本書其實(shí)是我的一本筆記(還在整理中).我是也是剛找到工作.這本筆記主要記錄了
我之前面試遇到的問題以及我在網(wǎng)上整理的一些資料主要是面向junior級(jí)別的就是我
們這些小菜鳥啦~
目前只有我一個(gè)人希望大家都能加入進(jìn)來一起貢獻(xiàn)或者是指出錯(cuò)誤
如果有確實(shí)幫助到大家可以進(jìn)我的源代碼在右上角star一下下:)
Gitbook地址
Github托管地址
如何貢獻(xiàn)
任何問題都?xì)g迎直接聯(lián)系我dongchuan55@QQ526402328
因?yàn)楝F(xiàn)在gitbook支持在線編輯功能,類似于officeword.所以想要貢獻(xiàn)的同學(xué)可以
直接聯(lián)系我開權(quán)限!
許可證
該項(xiàng)目采用知識(shí)共享署名-相同方式共享4.0國際許可協(xié)議進(jìn)行許.傳播此文檔時(shí)請(qǐng)注
意遵循以上許可協(xié)議.關(guān)于本許可證的更多詳情可參考http循/creat可ecommons.org/li
censes/by-sa/4.0/
Java
第一部分是Java的基礎(chǔ)面試題補(bǔ)充ing
說一說Java
Sun公司在1995創(chuàng)建
Java的一些特點(diǎn)?
?ObjectOriented面向?qū)ο?/p>
?PlatformIndependent平臺(tái)獨(dú)立
?Interpreted解釋性語言
?Multi-threaded多線程
但是Java最重要的特點(diǎn)是平臺(tái)獨(dú)立
平臺(tái)獨(dú)立意味著我們可以在一個(gè)系統(tǒng)編譯它然后在另外一個(gè)系統(tǒng)使用它
PS:有一些中文的博客會(huì)說java也是編譯性語言因?yàn)閲鴥?nèi)博客都是你抄我我抄你所
以你懂的當(dāng)然最好就是給出編譯混合解釋性這個(gè)說法然后給出自己的理解我自己在國
外面試的時(shí)候也問了幾個(gè)面試官關(guān)于這個(gè)問題都說解釋性語言是最準(zhǔn)確的.
Java為什么是高效的(HighPerformanc
e)?
因?yàn)镴ava使用Just-In-Time(即時(shí))編譯器.
把java字節(jié)碼直接轉(zhuǎn)換成可以直接發(fā)送給處理器的指令的程序.
列舉出2個(gè)IDE
Netbeans,Eclipse,etc.
面向?qū)ο蟮奶卣饔心男┓矫?/p>
?封裝
讓變量和訪問這個(gè)變量的方法放在一起,將一個(gè)類中的成員變量全部定義成私有的,只有
這個(gè)類自己的方法才可以訪問到這些成員變量
?抽象
聲明方法的存在而不去實(shí)現(xiàn)它的類被叫做抽象類
?繼承
繼承是子類自動(dòng)共享父類數(shù)據(jù)和方法的機(jī)制,這是類之間的一種關(guān)系,提高了軟件的可重
用性和可擴(kuò)展性
?多態(tài)
多態(tài)就是指一個(gè)變量,一個(gè)方法或者一個(gè)對(duì)象可以有不同的形式.
JDKJREJVM?
?解釋它們的區(qū)別
?為什么JVM不是平臺(tái)獨(dú)立的
JDK
JavaDevelopmentKit用作開發(fā),包含了JRE,編譯器和其他的工具(比如:JavaDoc,Ja
va調(diào)試器),可以讓開發(fā)者開發(fā)、編譯、執(zhí)行Java應(yīng)用程序.
JRE
Java運(yùn)行時(shí)環(huán)境是將要執(zhí)行Java程序的Java虛擬機(jī),可以想象成它是一個(gè)容器,JVM
是它的內(nèi)容.
JRE=JVM+JavaPackagesClasses(likeutil,math,lang,awt,swingetc)+runtim
elibraries.
JVM
Javavirtualmachine(Java虛擬機(jī))是一個(gè)可以執(zhí)行Java編譯產(chǎn)生的Javaclass
文件(bytecode)的虛擬機(jī)進(jìn)程,是一個(gè)純的運(yùn)行環(huán)境.
JVM不是平臺(tái)獨(dú)立的
Java被設(shè)計(jì)成允許應(yīng)用程序可以運(yùn)行在任意的平臺(tái),而不需要程序員為每一個(gè)平臺(tái)單獨(dú)重
寫或者是重新編譯.Java虛擬機(jī)讓這個(gè)變?yōu)榭赡?,因?yàn)樗赖讓佑布脚_(tái)的指令長(zhǎng)度和
其他特性.
Reference
DiffbetweenTREandJVM
什么是對(duì)象(Object)?
?對(duì)象是程序運(yùn)行時(shí)的實(shí)體
?它的狀態(tài)存儲(chǔ)在fields(也就是變量)
?行為是通過方法(method)實(shí)現(xiàn)的
?方法上操作對(duì)象的內(nèi)部的狀態(tài)
?方法是對(duì)象對(duì)對(duì)象的通信的主要手段
一個(gè)類是由哪些變量構(gòu)成的?
?Localvariable本地變量
?instancevariables實(shí)例變量
?classvariables類變量
Localvariable
在方法體,構(gòu)造體內(nèi)部定義的變量在方法結(jié)束的時(shí)候就被摧毀
instancevariables
在類里但是不在方法里在類被載入的時(shí)候被實(shí)例化
classvariables
在類里但在方法外,加了static關(guān)鍵字.也可以叫做靜態(tài)變量
靜態(tài)變量和實(shí)例變量的區(qū)別?
?在語法定義上的區(qū)別:靜態(tài)變量前要加static關(guān)鍵字,而實(shí)例變量前則不加。
?在程序運(yùn)行時(shí)的區(qū)別:實(shí)例變量屬于某個(gè)對(duì)象的屬性,必須創(chuàng)建了實(shí)例對(duì)象
(比如new一個(gè)),其中的實(shí)例變量才會(huì)被分配空間,才能使用這個(gè)實(shí)例變
量.靜態(tài)變量不屬于某個(gè)實(shí)例對(duì)象,而是屬于類,所以也稱為類變量,只
要程序加載了類的字節(jié)碼,不用創(chuàng)建任何實(shí)例對(duì)象,靜態(tài)變量就會(huì)被分配空
間,靜態(tài)變量就可以被使用了.
?總之,實(shí)例變量必須創(chuàng)建對(duì)象后才可以通過這個(gè)對(duì)象來使用,靜態(tài)變量則可以
直接使用類名來引用.
例如,對(duì)于下面的程序,無論創(chuàng)建多少個(gè)實(shí)例對(duì)象,永遠(yuǎn)都只分配了一個(gè)staticVar變量,
并且每創(chuàng)建一個(gè)實(shí)例對(duì)象,這個(gè)staticVar就會(huì)加;但是,每創(chuàng)建一個(gè)實(shí)例對(duì)象,就會(huì)分
配一個(gè)instanceVar,即可能分配多個(gè)instanceVar,并且每個(gè)instanceVar的值都只自加
了1次.
publicclassVariantTest{publicstaticintstaticVar=0;publicintinstanceVar=0;
publicVariantTest(){staticVar++;instanceVar++;System,ou
t.printin("staticVar:"+staticVar+”,instanceVar="+instanceVar);}}
封裝Encapsulation
?使一個(gè)類的變量private
?提供public方法來調(diào)用這些變量.所以外部類是進(jìn)不去的.這些變量被隱藏
在類里了.只能通過已經(jīng)定義的pulic方法調(diào)用.
好處
當(dāng)我們修改我們的實(shí)現(xiàn)的代碼時(shí),不會(huì)破壞其他調(diào)用我們這部分代碼的代碼.可維護(hù)性,
靈活性和可擴(kuò)展
多態(tài)Polymorphism
多態(tài)就是指一個(gè)變量,一個(gè)方法或者一個(gè)對(duì)象可以有不同的形式.
多態(tài)主要分為
?重載overloading
就是一個(gè)類里有兩個(gè)或更多的函數(shù),名字相同而他們的參數(shù)不同.
?覆寫overriding
是發(fā)生在子類中!也就是說必須有繼承的情況下才有覆蓋發(fā)生.當(dāng)你繼承父類的方法時(shí),如果你感到哪個(gè)方法不爽,功
能要變,那就把那個(gè)函數(shù)在子類中重新實(shí)現(xiàn)一遍.
例子
重載靜態(tài)捆綁(staticbinding)是Compile時(shí)的多態(tài)
EmployeeFactory.create(StringfirstName,StringlastName){...}EmployeeEactory.create(Integerid,String
lastName){...}
覆寫動(dòng)態(tài)捆綁(dynamicbinding)是runtime多態(tài)
publicclassAnimal{publicvoidmakeNoise(){System,out.printIn("Somesound
");}}classDogextendsAnimal{publicvoidmakeNoise0{System,out.println(z/Bar
k");}}classCatextendsAnimal{publicvoidmakeNoise0{System,out.printin(,zMe
awoo");}}publicclassDemo{publicstaticvoidmain(String[]args){Animalal=n
ewCat();al.makeNoise();//PrintsMeowooAnimala2=newDog();a2.makeNoise
();//PrintsBark}}
構(gòu)造器是否可以被override
構(gòu)造器不能被繼承所以不能被override但可以被重載overload
接口Interface
接口是抽象方法的集合。一個(gè)類實(shí)現(xiàn)一個(gè)或多個(gè)接口,因此繼承了接口的抽象方法.
接口的特點(diǎn)
?不能實(shí)例化
?沒有構(gòu)造體
?所有方法都是抽象的(abstract).同時(shí)也是隱式的publicstatic.也就是說
聲明時(shí),可以省略publicstatic.
?只能含有聲明為finalstatic的field
接口和抽象的區(qū)別
抽象類可以有構(gòu)造方法接口不行
抽象類可以有普通成員變量接口沒有
抽象類可以有非抽象的方法接口必須全部抽象
抽象類的訪問類型都可以接口只能是publicabstract
一個(gè)類可以實(shí)現(xiàn)多個(gè)接口但只能繼承一個(gè)抽象類
基礎(chǔ)概念題
下面哪一項(xiàng)說法是正確的
1.在?個(gè)子類里,一個(gè)方法不是public就不能重載2.覆蓋一個(gè)方法只需要滿足相同的方法名和參數(shù)類型3.覆蓋一
個(gè)方法必須方法名,參數(shù)和返回類型都相同4.一個(gè)覆蓋的方法必須有相同的方法名,參數(shù)名和參數(shù)類型
答案3
覆蓋函數(shù)與被覆蓋函數(shù)只有函數(shù)體不同
下面哪一項(xiàng)說法是錯(cuò)誤的
1.重載函數(shù)的函數(shù)名必須相同2.重載函數(shù)必須在參數(shù)個(gè)數(shù)或類型上有所不同3.重載函數(shù)的返回值必須相同4.重
載函數(shù)的函數(shù)體可以不同
答案3
函數(shù)的重載與函數(shù)的返回值無關(guān)
下面哪一項(xiàng)說法是正確的
1.靜態(tài)方法不能被覆蓋2.靜態(tài)方法不能被聲明稱私有3.私有方法不能被重載4.一個(gè)重載的方法在基類中不通過
檢杳不能拋出異常
答案1
基礎(chǔ)程序題
題目一
classBase{}classAggextendsBase{publicStringgetFieldsO{Stringname="Agg”;
returnname;)}publicclassAvf{pulicstaticvoidmain(Stringargv[]){Basea=new
Agg();//here}}
下面哪個(gè)選項(xiàng)的代碼替換到〃here會(huì)調(diào)用getFields方法,使出書結(jié)果是Agg
A.System,out.println(a.getFieldsO);B.System,out.println(a.name);C.System,out.println((Base)a.getFi
eldsO);D.System.out.println(((Agg)a).getFieldsO);
答案D
Base類要引用Agg類的實(shí)例需要把Base類顯示地轉(zhuǎn)換成Agg類,然后調(diào)用Agg類中
的方法.如果a是Base類的一個(gè)實(shí)例,是不存在這個(gè)方法的,必須把a(bǔ)轉(zhuǎn)換成Agg的
一個(gè)實(shí)例
題目二
classA{publicA(){System,out.printIn("A");}}publicclassBextendsA{publi
cB(){System.out.println(*B*);}publicstaticvoidmain(String[]args){Aa=
newB();a=newA();})
輸出結(jié)果是ABA
題目三
classA{publicvoidprint(){System,out.print1n("A");}}classBextendsA{publi
cvoidprint(){System,out.printin(〃B〃);}}publicclassTest(BobjectB=new
BO;objectB.print();Aas=(A)objectB;as.print();Aasg=objectB;asg.print
0;as=newA();as.print();..}
輸出為BBBA
題目四
publicclassTest{publicstaticvoidmain(String[]args){Fatherfather=newFatherO;
Fatherchild=newChiId();System.out.printin(father.getXamc());System,out.printin(chi
Id.getName());}}classFather{publicstaticStringgetName()(return"Father
)}classChildextendsFather{publicstaticStringgetName(){return“Child
)}
輸出是FatherFather因?yàn)檫@里的方法getName是靜態(tài)的.具體執(zhí)行哪一個(gè),則要看是
由哪個(gè)類來調(diào)用的.
super關(guān)鍵詞
?調(diào)用父類(Superclass)的成員或者方法
?調(diào)用父類的構(gòu)造函數(shù)
1.調(diào)用父類(Superclass)的成員或者方法
如果你的方法覆寫一個(gè)父類成員的方法,你可以通過super關(guān)鍵字調(diào)用父類的方法.考
慮下面的父類:
publicclassSuperclass{publicvoidprintMethod(){System,out.println(z,PrintedinSu
perclass.");}}
下面是一個(gè)子類(subclass),叫做Subclass,覆寫了printMethod():
publicclassSubclassextendsSuperclass{//overridesprintMethodinSuperclasspublicvoidp
rintMethodO{super.printMethod();System,out.printIn(^PrintedinSubclass");
publicstaticvoidmain(String[]args){Subclasss=newSubclass0;s.printMethod
0;)}
輸出
PrintedinSuperclass.PrintedinSubclass
1.調(diào)用父類的構(gòu)造函數(shù)
使用super關(guān)鍵字調(diào)用父類的構(gòu)造函數(shù).下面的MountainBike類是Bicycle類的子類.
它調(diào)用了父類的構(gòu)造方法并加入了自己的初始化代碼:
pub1icMountainBike(intstartHeight,intstartCadence,intstart
Speed,intstartGear){super(startCadence,startSpeed,startGear);seatHeig
ht=startHcight;}
調(diào)用父類的構(gòu)造體必須放在第一行.
使用
super0:
或者:
super(parameterlist);
通過super(),父類的無參構(gòu)造體會(huì)被調(diào)用.通過super(parameterlist),父類對(duì)應(yīng)參
數(shù)的構(gòu)造體會(huì)被調(diào)用.
注意:構(gòu)造體如果沒有顯式的調(diào)用父類的構(gòu)造體,Java編譯器自動(dòng)調(diào)用父類的無參構(gòu)造.
如果父類沒有無參構(gòu)造,就會(huì)報(bào)錯(cuò)(compile-timeerror).
Super程序題
題目一
classBase{Base(){System,out.printin("Base");}}publicclassChecketextendsBase
{Checket(){System.out.printIn(*Checket*);super();}publicstaticvoidma
in(Stringargv[]){Checketa=newChecket();}}
輸出是什么?是compiletimeerror,super()必須放在前面.
放在前面之后,輸出為BaseChecket
題目二
importjava.util.Date;publicclassTestextendsDate{publicstaticvoidmain(String[]args)
{newTest().test();)publicvoidtest(){System,out.printIn(super.getClassO.ge
tName());}}
返回的結(jié)果是Test
因?yàn)閟uper.getClassO.getNameO調(diào)用了父類的getClassO方法,返回當(dāng)前類
如果想得到父類的名稱,應(yīng)該用如下代碼:
getClass().getSuperClass().getName()
題目三
publicabstractclassCar{Stringname="Car”;publicStringgetNamc(){returnnam
e;}publicabstractvoiddcmarre();}publicclassBextendsCar{Stringname=〃B”;
publicStringgetNamc0{returnname;}publicvoiddcmarre(){System,out.prin
tin(getName()+〃demarre^);}}publicclassCextendsB(Stringname="C〃;publicStrin
ggetName(){returnname;}publicvoiddemarreWithSuper(){System,out.printIn
(super.getName()+〃demarre*);}publicvoiddemarreNoSuper(){System,out.println(get
NameO+"demarre*);}}publicclassDextendsB{publicStringgetName(){returnnam
e;}publicvoiddemarreNoSuper(){System,out.printin(getName()+“demarre");}}
publicclassTest{publicstaticvoidmain(String[]args){Bb=newB();b.demarr
e();CarbCar=newB0;bCar.demarre();Cc=newC();c.demarre0;/
/c里并沒有定義這個(gè)函數(shù)c.demarreWithSuper();c.demarreNoSuper();Dd=newD
();d.demarre0;transfer(c);//TransferCtransfer((B)c);//TransferB
transfer(d);//TransferB)publicstaticvoidtransfer(Bb){System,out.pri
ntln("TransferB〃);b.demarre();}publicstaticvoidtransfer(Cc)
{System,out.printin("TransferC");c.demarre();}}}
輸出是BdemarreBdemarreCdemarreBdemarreCdemarreBdemarreTransferCC
demarreTransferBCdemarreTransferBBdemarre
this程序題
題目一
classTester{intvar;Tester(doublevar){this,var=(int)var};Tester(intvar){this("hello
");Tester(Strings){this();System,out.println(s);}Tester0{System,ou
t.printIn("good-bye");}}
Testert=newTester(5)的輸出是什么?
good-byehello
題目二
貌似和this無關(guān)但是很重要publicclassBase{inti;
Base(){add(l);System,out.printin(i);}voidadd(intv){i+=v;
System,out.printIn(i);}}publicclassMyBaseextendsBase{MyBaseO{System.out.print
ln("MyBase");add(2);}voidadd(intv){System.out.printlnC^MyBaseAdd");
i+=v*2;System,out.printIn(i);}}publicclassTest{publicstaticvoidmain(String[]
args){go(newMyBase());}staticvoidgo(Baseb){b.add(8);}}
輸出的結(jié)果是22
子類會(huì)首先調(diào)用父類的構(gòu)造函數(shù),在父類的構(gòu)造函數(shù)BaseO中執(zhí)行add()方法.但這個(gè)
add()方法由于是在新建MyBase對(duì)象時(shí)調(diào)用的.所以是執(zhí)行的MyBase中的add方法
在Java中,子類的構(gòu)造過程中,必須調(diào)用其父類的構(gòu)造函數(shù),是因?yàn)橛欣^承關(guān)系存在時(shí),
子類要把父類的內(nèi)容繼承下來,通過什么手段做到的?這樣:當(dāng)你new一個(gè)子類對(duì)象的
時(shí)候,必須首先要new一個(gè)父類的對(duì)像出來,這個(gè)父類對(duì)象位于子類對(duì)象的內(nèi)部,所以說,
子類對(duì)象比父類對(duì)象大,子類對(duì)象里面包含了一個(gè)父類的對(duì)象,這是內(nèi)存中真實(shí)的情況.
構(gòu)造方法是new一個(gè)對(duì)象的時(shí)候,必須要調(diào)的方法,這是規(guī)定,要new父類對(duì)象出來,那么
肯定要調(diào)用其構(gòu)造方法,所以第一個(gè)規(guī)則:子類的構(gòu)造過程中,必須調(diào)用其父類的構(gòu)造
方法
一個(gè)類,如果我們不寫構(gòu)造方法,那么編譯器會(huì)幫我們加上一個(gè)默認(rèn)的構(gòu)造方法,所謂默
認(rèn)的構(gòu)造方法,就是沒有參數(shù)的構(gòu)造方法,但是如果你自己寫了構(gòu)造方法,那么編譯器就
不會(huì)給你添加了
所以有時(shí)候當(dāng)你new一個(gè)子類對(duì)象的時(shí)候,肯定調(diào)用了子類的構(gòu)造方法,但是在子類構(gòu)造
方法中我們并沒有顯示的調(diào)用基類的構(gòu)造方法,就是沒寫,如:super();并沒有這樣寫,
但是
第二個(gè)規(guī)則:如果子類的構(gòu)造方法中沒有顯示的調(diào)用基類構(gòu)造方法,則系統(tǒng)默認(rèn)調(diào)用基類
無參數(shù)的構(gòu)造方法
注意:如果子類的構(gòu)造方法中既沒有顯示的調(diào)用基類構(gòu)造方法,而基類中又沒有默認(rèn)無參
的構(gòu)造方法,則編譯出錯(cuò),所以,通常我們需要顯示的:super(參數(shù)列表),來調(diào)用父類
有參數(shù)的構(gòu)造函數(shù)
抽象abstract
Abstract類
?不能實(shí)例化
Abstract方法
?在父類里定義抽象方法,在子類里定義這個(gè)具體的方法,所以它是抽象的.
好處
減少復(fù)雜度和提高可維護(hù)性
abstract相關(guān)問題
題目一
什么是抽象類
1.Aclasswithnomethods
2.Aclasswithnoconcretesubclasses
3.Aclasswithatleastoneundefiendmessage
4.Noneofabove
答案是4我們是可以定義一個(gè)抽象空類的
abstractclassemptyAb{}
題目二
abstractclassBase(abstractpublicvoidmyfunc();}publicclassAbsextendsBase{publicsta
ticvoidmain(Stringargv[]){Absa=newAbs();a.amethodO;}publicvoidame
thod(){System,out.printIn(^Amethod");}}
運(yùn)行的結(jié)果
1.輸出Amethod
2.Thecodewillcompilebutcomplainatruntime
3.ThecompilerwillcomplainerrorsinAbsclass
答案是3
this()和super()在構(gòu)造體里怎么用?
thisO在同一個(gè)類的構(gòu)造體被調(diào)用.this("toto","tata”,1)相當(dāng)于調(diào)用對(duì)應(yīng)參數(shù)的構(gòu)造
體.
super()用來調(diào)用父類構(gòu)造體.
Static關(guān)鍵字
Static關(guān)鍵字表明一個(gè)成員變量或者是成員方法可以在沒有所屬的類的實(shí)例的情況下直
接被訪問
聲明為static的方法有以下幾條限制:
1.僅能調(diào)用其他的static方法
2.只能訪問static變量.
3.不能以任何方式引用this或super
4,不能被覆蓋.
聲明為static的變量實(shí)質(zhì)上就是全局變量.(+final就是全局常量).當(dāng)聲明一個(gè)對(duì)象
時(shí),并不產(chǎn)生static變量的拷貝,而是該類所有的實(shí)例變量共用同一個(gè)static變量.
對(duì)于靜態(tài)類,只能用于嵌套類內(nèi)部類中。
Reference
?StaticclassinJava-GeeksforGeeks
Static相關(guān)問題
Static關(guān)鍵字是什么意思?
Static關(guān)鍵字表明一個(gè)成員變量或者是成員方法可以在沒有所屬的類的實(shí)例的情況下直
接被訪問
是否可以override一個(gè)static的方法?
不能被覆蓋.因?yàn)榉椒ǜ采w是基于運(yùn)行時(shí)動(dòng)態(tài)綁定的,而static方法是編譯時(shí)靜態(tài)綁定
的.
一個(gè)static方法內(nèi)部調(diào)用非static方法?
不可以.因?yàn)榉莝tatic方法是要與對(duì)象關(guān)聯(lián)在一起的,須創(chuàng)建一個(gè)對(duì)象的實(shí)例后,才可
以在該對(duì)象上進(jìn)行方法調(diào)用,而static方法調(diào)用時(shí)不需要?jiǎng)?chuàng)建對(duì)象,可以直接調(diào)用.也就
是說,當(dāng)一個(gè)static方法被調(diào)用時(shí),,可能還沒有創(chuàng)建任何實(shí)例對(duì)象,如果從一個(gè)stati
c方法中發(fā)出對(duì)非static方法的調(diào)用,那個(gè)非static方法是關(guān)聯(lián)到哪個(gè)對(duì)象上的呢?
這個(gè)邏輯無法成立,所以,一個(gè)static方法內(nèi)部發(fā)出對(duì)非static方法的調(diào)用.
是否可以在static環(huán)境中訪問非static變量?
同上
Singleton單例模式
Java中單例模式定義:“一個(gè)類有且僅有一個(gè)實(shí)例,并且自行實(shí)例化向整個(gè)系統(tǒng)提供?!?/p>
publicclassSingleton{privateSingletonO{//dosomething}privatestaticclas
sSingletonHolder{privatestaticfinalSingletonINSTANCE=newSingletonO;}public
sialicfinalSingletongelInslance{returnSingletonHolder.INSTANCE;}}
多選題注意
?一是單例模式的類只提供私有的構(gòu)造函數(shù)
?二是類定義中含有一個(gè)該類的靜態(tài)私有對(duì)象
?三是該類提供了一個(gè)靜態(tài)的公有的函數(shù)用于創(chuàng)建或獲取它本身的靜態(tài)私有對(duì)象。
Reference
?深入淺出單實(shí)例Singleton設(shè)計(jì)模式I酷殼-CoolShelLcn
equals()與hashcode()
Equal
如果需要比較對(duì)象的值,就需要equal方法了.看一下JDK中equal方法的實(shí)現(xiàn):
publicbooleanequals(Objectobj){return(this==obj);}
也就是說,默認(rèn)情況下比較的還是對(duì)象的地址.所以如果把對(duì)象放入Set中等操作,就需
要重寫eqaul方法了
重寫之后的equals()比較的就是對(duì)象的內(nèi)容了
hashcode
Wheninsertinganobjectintoahastableyouuseakey.Thehashcodeofthis
keyiscalculated,andusedtodeterminewheretostoretheobjectinternally.
Whenyouneedtolookupanobjectinahashtableyoualsouseakey.Thehash
codeofthiskeyiscalculatedandusedtodeterminewheretosearchfortheo
bject.
Thehashcodeonlypointstoacertain"area”(orlist,bucketetc)internally,
Sincedifferentkeyobjectscouldpotentiallyhavethesamehashcode,thehas
hcodeitselfisnoguaranteethattherightkeyisfound.Thehashtablethen
iteratesthisarea(allkeyswiththesamehashcode)andusesthekey'sequal
s()methodtofindtherightkey.Oncetherightkeyisfound,theobjectstor
edforthatkeyisreturned.
So,asyoucansee,acombinationofth
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2013-2022年北京市中考真題物理試題匯編:功和能章節(jié)綜合
- 2025年代理設(shè)備戰(zhàn)略合作協(xié)議(2篇)
- 2025年產(chǎn)品賠償協(xié)議樣本(三篇)
- 2025年九年級(jí)二班班主任的工作總結(jié)(三篇)
- 2025年個(gè)體單位用工合同標(biāo)準(zhǔn)范文(2篇)
- 2025年產(chǎn)品研發(fā)合作協(xié)議常用版(2篇)
- 智能家居項(xiàng)目居間合同-@-1
- 傳統(tǒng)制造業(yè)辦公室翻新合同
- 水產(chǎn)冷凍品運(yùn)輸合同格式
- 2025年度保密技術(shù)合作開發(fā)合同
- 河北省滄州市五縣聯(lián)考2024-2025學(xué)年高一上學(xué)期期末英語試卷(含答案含含聽力原文無音頻)
- 福建省泉州市南安市2024-2025學(xué)年九年級(jí)上學(xué)期期末考試語文試題(無答案)
- 腫瘤護(hù)士培訓(xùn)課件
- 新課標(biāo)體育與健康水平二教案合集
- 2025屆高考語文一輪復(fù)習(xí)知識(shí)清單:古代詩歌鑒賞
- 醫(yī)療器材申請(qǐng)物價(jià)流程
- 我的消防文員職業(yè)規(guī)劃
- 2025年公司品質(zhì)部部門工作計(jì)劃
- 2024年世界職業(yè)院校技能大賽高職組“市政管線(道)數(shù)字化施工組”賽項(xiàng)考試題庫
- 華為研發(fā)部門績(jī)效考核制度及方案
- CSC資助出國博士聯(lián)合培養(yǎng)研修計(jì)劃英文-research-plan
評(píng)論
0/150
提交評(píng)論