當今世界上使用最廣泛的編程語言之一是Java诸迟。Java是通用的高級編程語言励两。核心java是java編程技術(shù)概念的基礎(chǔ),該術(shù)語由sun Microsystems用來描述Java的標準版本(JSE)据德。核心Java只是Java的一部分,它代表J2SE,其中包含Java的所有基礎(chǔ)知識,包括一些原理和軟件包詳細信息。Java核心概念涵蓋了所有OOPS概念,特殊運算符,數(shù)據(jù)類型,包裝類,異常處理,多態(tài)性,多線程,鏈接列表,隊列,堆棧,數(shù)組列表僵驰。它最常用于開發(fā)桌面應(yīng)用程序和服務(wù)器環(huán)境(開發(fā)獨立應(yīng)用程序)就斤。
JDK和JVM有什么區(qū)別?
JDK(Java開發(fā)工具包)是一個開發(fā)目的,它還包括執(zhí)行環(huán)境。但是JVM純粹是運行時環(huán)境,因此您將無法使用JVM編譯源文件庸推。
OOPS的基本概念是什么?
抽象化
多態(tài)性
繼承
封裝
你能解釋多態(tài)嗎?
多態(tài)被簡要描述為“一個接口,許多實現(xiàn)”常侦。多態(tài)性是能夠在不同上下文中為某事物賦予不同含義或用法的一種特征-具體來說,就是允許諸如變量,函數(shù)或?qū)ο笾惖膶嶓w具有多種形式浇冰。
內(nèi)部類和子類之間有什么區(qū)別?
內(nèi)部類是嵌套在另一個類中的一個類。內(nèi)部類具有對其嵌套的類的訪問權(quán)限,并且可以訪問在外部類中定義的所有變量和方法聋亡。
子類是從另一個稱為超類的類繼承的類肘习。子類可以訪問其父類的所有公共和受保護的方法以及字段。
Java類的private,public是什么?
在Java中,訪問說明符是在定義訪問范圍的類名之前使用的關(guān)鍵字坡倔。類的訪問說明符的類型為:
- public:類,方法,字段可從任何地方訪問漂佩。
- Protected::方法,字段可以從它們所屬的同一類或子類以及同一包的類中訪問,但不能從外部訪問。
- default: Method,Field,class只能從同一程序包訪問,而不能從其本機程序包外部訪問罪塔。
- private:方法,字段可以從它們所屬的相同類中訪問投蝉。
您能解釋一下靜態(tài)方法和靜態(tài)變量嗎?
當需要在一個類的多個對象之間共享方法或變量,而不是為每個對象創(chuàng)建單獨的副本時,我們使用static關(guān)鍵字使所有對象共享一個方法或變量。
Java支持運算符重載嗎?
沒有
可以重載方法嗎?
是的,派生類仍然可以覆蓋重載的方法征堪。多態(tài)仍然可能發(fā)生瘩缆。編譯器將不會綁定方法調(diào)用,因為它已被重載,因為它可能會在現(xiàn)在或?qū)肀桓采w。
什么是數(shù)據(jù)封裝,其意義是什么?
封裝是面向?qū)ο缶幊讨械囊粋€概念,用于在單個單元中組合屬性和方法佃蚜。
封裝可幫助程序員遵循模塊化的方法進行軟件開發(fā),因為每個對象都有自己的一組方法和變量,并且其功能獨立于其他對象庸娱。封裝還用于數(shù)據(jù)隱藏。
什么是單例模式?舉例說明其用法
Java中的單例類只能有一個實例,因此其所有方法和變量都只屬于一個實例谐算。單例類概念對于需要限制一個類的對象數(shù)量的情況很有用涌韩。
單例使用情況的最佳示例是,由于某些驅(qū)動程序限制或任何許可問題,只有一個數(shù)據(jù)庫連接存在限制。
什么是守護線程?
它是一個線程,不會阻止JVM在程序完成但該線程仍在運行時退出氯夷。守護程序線程的一個示例是垃圾回收臣樱。
Java中的循環(huán)是什么?三種循環(huán)類型是什么?
循環(huán)在編程中用于重復執(zhí)行一條語句或語句塊。Java中有三種循環(huán)類型:
for
在Java中,for循環(huán)用于重復執(zhí)行給定次數(shù)的語句腮考。當程序員知道執(zhí)行語句的次數(shù)時,將使用for循環(huán)雇毫。
While循環(huán)
當某些語句需要重復執(zhí)行直到滿足條件時,使用while循環(huán)。在while循環(huán)中,在執(zhí)行語句之前先檢查條件踩蔚。
do While
Do While循環(huán)與while循環(huán)相同,只是執(zhí)行語句塊后檢查條件的不同棚放。因此,在do while循環(huán)的情況下,語句至少執(zhí)行一次。
您可以定義死鎖嗎?
死鎖描述了一種情況,其中兩個或多個線程永遠被阻塞,互相等待馅闽。
什么是無限循環(huán)?如何聲明無限循環(huán)?
無限循環(huán)無條件運行,并且無限運行飘蚯。通過在語句塊的主體中??定義任何中斷邏輯,可以中斷無限循環(huán)。
無限循環(huán)聲明如下:
for(;;)
{
//要執(zhí)行的語句
//添加任何循環(huán)中斷邏輯
}
Continue和break語句有什么區(qū)別?
中斷和繼續(xù)是循環(huán)中使用的兩個重要關(guān)鍵字福也。在循環(huán)中使用break關(guān)鍵字時,循環(huán)會立即中斷,而在使用continue關(guān)鍵字時,當前迭代會中斷,并且循環(huán)會繼續(xù)進行下一次迭代局骤。
在下面的示例中,當計數(shù)器達到4時,循環(huán)中斷。
for (counter=0;counter
System.out.println(counter);
If (counter==4) {
Break;
}
}
在下面的示例中,當計數(shù)器達到4時,循環(huán)會跳至tonext迭代,而continue關(guān)鍵字之后的所有語句都將跳過當前迭代暴凑。
for (counter=0;counter
System.out.println(counter);
If (counter==4) {
continue;
}
System.outprintln(“This will not get printed when counter is 4”);
}
Java中的double和float變量有什么區(qū)別?
在Java中,float占用4個字節(jié)的內(nèi)存,而Double占用8個字節(jié)的內(nèi)存峦甩。浮點數(shù)是單精度浮點十進制數(shù),而雙精度數(shù)是雙精度十進制數(shù)。
什么是javac?
javac從* .java文件生成Java字節(jié)碼现喳。它是您的源代碼的中間表示,其中包含指示
Java中的最終關(guān)鍵字是什么?舉個例子
在Java中,使用關(guān)鍵字Final聲明一個常量凯傲。值只能分配一次,分配后不能更改常量的值犬辰。
在下面的示例中,聲明了名稱為const_val的常量,并為其分配了一個值:
private Final int const_val=100
當一個方法聲明為final方法時,它不能被子類覆蓋。此方法比任何其他方法都快,因為它們在編譯時已解決冰单。
當一個類聲明為final時,則不能將其子類化幌缝。示例String,Integer和其他包裝器類。
什么是三元運算符?
三元運算符(也稱為條件運算符)用于根據(jù)布爾值評估來決定將哪個值分配給變量诫欠。表示為?
在下面的示例中,如果等級為1,則為狀態(tài)分配值“Done”,否則為“Pending”涵卵。
public class conditionTest {
public static void main(string args[]) {
String status;
int rank;
status= (rank == 1) ? “Done”: “Pending”;
}
}
Java中有6種不同類型的運算符?
在Java中,運算符可以分為以下六種類型:
算術(shù)運算符
用于算術(shù)計算。例如+,-,*,/,%,++,–
關(guān)系運算符
用于關(guān)系比較呕诉。例如==,!=,>,<,<=,> =
按位運算符
用于逐位操作缘厢。例如&,|,^,?
邏輯運算符
用于邏輯比較吃度。例如&&,|| ,!
賦值運算符
用于為變量分配值甩挫。例如=,+ =,-=,* =,/ =
Java派生所有類的基類是什么?
java.lang.object
Java中的main()方法可以返回任何數(shù)據(jù)嗎?
在Java中,main()方法無法返回任何數(shù)據(jù),因此,始終使用無效的返回類型進行聲明。
什么是Java包?包裝的意義是什么?
在Java中,包是類和接口的集合,這些類和接口相互關(guān)聯(lián)在一起,因此捆綁在一起椿每。軟件包的使用有助于開發(fā)人員對代碼進行模塊化,并對代碼進行分組以進行適當?shù)闹赜靡琳摺⒋a打包到Packages中之后,就可以將其導入其他類中并使用了。
我們可以在沒有任何抽象方法的情況下將類聲明為Abstract嗎?
是的,即使沒有任何抽象方法,我們也可以在類名之前使用abstract關(guān)鍵字來創(chuàng)建一個抽象類间护。但是,如果一個類甚至具有一個抽象方法,則必須將其聲明為抽象方法,否則將產(chǎn)生錯誤亦渗。
堆內(nèi)存和堆棧內(nèi)存有什么區(qū)別?
堆內(nèi)存由應(yīng)用程序的所有部分使用。每當創(chuàng)建對象時,它始終存儲在堆空間中,并且堆棧存儲器包含對該對象的引用汁尺。內(nèi)存管理在Heap內(nèi)存中更為復雜,因為它在全局范圍內(nèi)使用法精。
堆棧存儲器僅由一個執(zhí)行線程使用。堆棧內(nèi)存僅包含局部原始變量和堆空間中對象的引用變量痴突。堆棧中的內(nèi)存管理以LIFO方式完成
Java中的抽象類和接口有什么區(qū)別?
抽象類和接口之間的主要區(qū)別在于,接口只能擁有沒有具體實現(xiàn)的公共靜態(tài)方法的聲明,而抽象類可以具有帶有或不帶有具體實現(xiàn)的帶有任何訪問說明符(公共,私有等)的成員搂蜓。
使用抽象類和接口的另一個主要區(qū)別是,實現(xiàn)接口的類必須實現(xiàn)接口的所有方法,而從抽象類繼承的類則不需要實現(xiàn)其超類的所有方法。
一個類可以實現(xiàn)多個接口,但只能擴展一個抽象類辽装。
接口對抽象類的性能影響是什么?
與抽象類相比,接口的性能較慢,因為接口需要額外的間接調(diào)用帮碰。開發(fā)人員要考慮的另一個關(guān)鍵因素是,任何類只能擴展一個抽象類,而一個類可以實現(xiàn)許多接口。
每當在類中實現(xiàn)接口時,使用接口也給開發(fā)人員帶來了額外的負擔;開發(fā)人員被迫實現(xiàn)每種接口方法拾积。
導入軟件包是否也可以在Java中導入其子軟件包?
在Java中,當導入包時,不會導入其子包,并且如果需要,開發(fā)人員需要分別導入它們殉挽。
例如,如果開發(fā)人員導入了一個軟件包university。*,則將裝入名為university的軟件包中的所有類,但不會裝入該子軟件包中的任何類拓巧。
我們可以將類的主要方法聲明為私有方法嗎?
在Java中,main方法必須是public static以便正確運行任何應(yīng)用程序斯碌。如果將main方法聲明為私有方法,則開發(fā)人員將不會獲得任何編譯錯誤,它將無法執(zhí)行,并會給出運行時錯誤。
我們?nèi)绾瓮ㄟ^引用將參數(shù)傳遞給函數(shù),而不是通過值傳遞?
在Java中,我們只能通過值而不是通過引用將參數(shù)傳遞給函數(shù)肛度。
如何在Java中序列化對象?
在Java中,要通過序列化將對象轉(zhuǎn)換為字節(jié)流,該類將實現(xiàn)一個名為Serializable的接口输拇。實現(xiàn)可序列化接口的類的所有對象均被序列化,其狀態(tài)保存在字節(jié)流中。
什么時候應(yīng)該使用序列化?
當需要通過網(wǎng)絡(luò)傳輸數(shù)據(jù)時,使用串行化贤斜。使用序列化,可以保存對象的狀態(tài)并將其轉(zhuǎn)換為字節(jié)流策吠。字節(jié)流通過網(wǎng)絡(luò)傳輸,并且在目標位置重新創(chuàng)建對象逛裤。
在Java中,在try塊后面緊跟一個catch塊是否強制進行異常處理?
嘗試阻止之后,需要緊接著是Catch阻止,finally阻止或二者兼有。從try塊引發(fā)的任何異常都需要捕獲在catch塊中,或者必須在代碼中止之前將要執(zhí)行的任何特定任務(wù)放入Final塊中猴抹。
即使在異常塊中發(fā)生某些異常,是否有任何方法可以跳過最終的異常塊?
如果在Try塊中引發(fā)異常,則控制傳遞到catch塊(如果存在),否則傳遞到finally塊带族。當發(fā)生異常時,總是執(zhí)行finally塊,避免在finally塊中執(zhí)行任何語句的唯一方法是通過在try塊的末尾編寫以下代碼行來強行中止代碼:
System.exit(0);
一個類可以有多個構(gòu)造函數(shù)嗎?
是的,一個類可以具有多個帶有不同參數(shù)的構(gòu)造函數(shù)。用于創(chuàng)建對象的構(gòu)造函數(shù)取決于創(chuàng)建對象時傳遞的參數(shù)蟀给。
super關(guān)鍵字有什么作用?
當您在子類中重寫方法時,可以使用super關(guān)鍵字來訪問該方法蝙砌。
我們可以重寫類的靜態(tài)方法嗎?
我們不能覆蓋靜態(tài)方法。靜態(tài)方法屬于一個類,而不屬于單個對象,并且在編譯時(而不是在運行時)解析跋理。即使我們嘗試覆蓋靜態(tài)方法,也不會遇到編譯錯誤,也不會在運行代碼時產(chǎn)生覆蓋的影響择克。
public class superclass {
public void displayResult() {
System.out.println(“Printing from superclass”);
}
}
public class subclass extends superclass {
public void displayResult() {
System.out.println(“Displaying from subClass”);
super.displayResult();
}
public static void main(String args[]) {
subclass obj=new subclass();
obj.displayResult();
}
}
Output will be:
Displaying from subclass
Displaying from superclass
字符串是Java中的數(shù)據(jù)類型嗎?
字符串不是Java中的原始數(shù)據(jù)類型。在Java中創(chuàng)建字符串時,它實際上是創(chuàng)建的Java.Lang.String類的對象前普。創(chuàng)建此字符串對象后,可以在該字符串對象上使用String類的所有內(nèi)置方法肚邢。
- Java內(nèi)存管理面試指南一
- Java基礎(chǔ)面試指南一
- Java基礎(chǔ)面試指南二
- Java基礎(chǔ)面試指南三
- Java基礎(chǔ)面試指南四
- Java線程面試指南一
- Java線程面試指南二
- Redis面試指南一
- Kafka面試指南一
- Spring面試指南一
- SpringBoot面試指南一
- 微服務(wù)面試指南一
作者:分布式編程
出處:https://zthinker.com/
如果你喜歡本文,請長按二維碼,關(guān)注 分布式編程
.