個(gè)人建網(wǎng)站wordpress東莞疫情最新數(shù)據(jù)
JAVA相關(guān)
JAVA語(yǔ)言概述
1. 一個(gè)".java"源文件中是否可以包含多個(gè)類(lèi)?有什么限制?
可以。
一個(gè)源文件可以聲明多個(gè)類(lèi),但是最多只能有一個(gè)類(lèi)使用public進(jìn)行聲明
且要求聲明public的類(lèi)的類(lèi)名與源文件相同。
2. Java的優(yōu)勢(shì)?
- 跨平臺(tái)性
- 安全性高
- 簡(jiǎn)單性
- 高性能
- 面向?qū)ο笮?/li>
- 健壯性
- 社區(qū)繁榮
3. Java中是否存在內(nèi)存溢出、內(nèi)存泄漏?如何解決?
存在。
(內(nèi)存溢出、內(nèi)存泄漏:程序在執(zhí)行過(guò)程中,已經(jīng)不再使用的內(nèi)存空間, JVM通過(guò)相關(guān)算法判定以后不認(rèn)為是垃圾,于是構(gòu)成內(nèi)存泄漏)
4. 如何看待Java是一門(mén)半編譯半解釋型語(yǔ)言?
java源碼經(jīng)過(guò)編譯器生成字節(jié)碼(.class),字節(jié)碼可以通過(guò)解釋器(解釋執(zhí)行) | JIT編譯器(編譯執(zhí)行)得到機(jī)器碼
變量與運(yùn)算符
1. 如何高效的計(jì)算2*8的值?
使用<<(左移)
2. &和&&區(qū)別?
都是表示且的關(guān)系,&左邊是false時(shí)仍然執(zhí)行,&&左邊是false不再執(zhí)行
3. Java中的基本數(shù)據(jù)類(lèi)型有哪些?String時(shí)最基本的數(shù)據(jù)類(lèi)型嗎?
8種基本數(shù)據(jù)類(lèi)型:byte,short,int,long,char,boolen,float,double
String不是,屬于引用類(lèi)型
4. Java開(kāi)發(fā)中計(jì)算金額是是用什么數(shù)據(jù)類(lèi)型?
不能使用double,float,因?yàn)榫炔桓?br /> 使用BigDecimal類(lèi)
替換,可以實(shí)現(xiàn)任意精度的運(yùn)算
5. char變量中能不能存儲(chǔ)一個(gè)中文漢字?
可以,應(yīng)為char使用Unicode字符集,包含了世界范圍的所有字符集。
char='中'
6. 代碼分析
short s1=1;
s1=s1+1; //有什么錯(cuò)?(右邊是int類(lèi)型,需要強(qiáng)制轉(zhuǎn)換)
short s1=1;
s1+=1; //有什么錯(cuò)?(沒(méi)錯(cuò))
7. int i=0; i++; 執(zhí)行這兩句話后,i的值為?
0
8. 如何將兩個(gè)變量值互換
String s1 = "abc"
String s2 = "def"String temp = s1;
s1 = s2;
s2 = temp;
9. boolean占幾個(gè)字節(jié)?
編譯的時(shí)候不談?wù)紟讉€(gè)字節(jié)。
但是JVM再給boolean類(lèi)型分配內(nèi)存空間是,boolean類(lèi)型的變量占據(jù)一個(gè)slot(4B)。
拓展:在內(nèi)存中,byte\short\char\int\boolean\float:占用1個(gè)slot
______________________________double\long:占用2個(gè)slot
10. 為什么Java中0.1+0.2≠0.3?
不是每個(gè)小數(shù)都有對(duì)應(yīng)的二進(jìn)制數(shù)字,可以采用四舍五入
或同乘同除
方法進(jìn)行驗(yàn)證,避免上述問(wèn)題。
流程控制語(yǔ)句
1. break和continue的作用
2. if分支語(yǔ)句和switch分支語(yǔ)句的異同之處?
- if-else語(yǔ)句優(yōu)勢(shì)
if語(yǔ)句的條件是一個(gè)布爾類(lèi)型值,if條件表達(dá)式為true則進(jìn)入分支,可以用于范圍的判斷,也可以用于等值的判斷,使用范圍更廣
。
switch語(yǔ)句的條件是一個(gè)常量值(byte,short,int,char,枚舉,String),只能判斷某個(gè)變量或表達(dá)式的結(jié)果是否等于某個(gè)常量值,使用場(chǎng)景較狹窄
。
- switch語(yǔ)句優(yōu)勢(shì)
當(dāng)條件是判斷某個(gè)變量或表達(dá)式是否等于某個(gè)固定的常量值時(shí),使用if和switch都可以,習(xí)慣上使用switch更多。因?yàn)?code>效率稍高。當(dāng)條件是區(qū)間范圍的判斷時(shí),只能使用if語(yǔ)句。
使用switch可以利用穿透性
,同時(shí)執(zhí)行多個(gè)分支,而if…else沒(méi)有穿透性。
3. switch語(yǔ)句中忘寫(xiě)break會(huì)發(fā)生什么?
case穿透
4. Java至此和那些類(lèi)型循環(huán)?
while
,do-while
,for
,foreach
5. while和do-while循環(huán)的區(qū)別?
do-while至少會(huì)執(zhí)行一次
IDEA安裝與使用
1. 開(kāi)發(fā)中你接觸過(guò)的開(kāi)發(fā)工具有哪些?
IDEA
,Eclipse
2. 談?wù)勀銓?duì)Eclipse和IDEA使用上的感受?
IDEA是一種智能化開(kāi)發(fā)工具,Eclipse不夠人性化
數(shù)組
1. 數(shù)組有沒(méi)有l(wèi)ength()這個(gè)方法?String有沒(méi)有l(wèi)ength()這個(gè)方法?
數(shù)組沒(méi)有l(wèi)ength()方法
,是length屬性
String有length()方法
2. 有數(shù)組int[] arr,用Java代碼將數(shù)組元素順序顛倒
for(int i=0;i<arr.length/2;i++){int temp=arr[i]arr[i]=arr[arr.length-i-1];arr[arr.length-i-1]=temp;
}
3. 為什么數(shù)組要從0開(kāi)始編號(hào),而不是1?
數(shù)組索引,表示了數(shù)組元素距離首地址的偏移量。因?yàn)榈谝粋€(gè)元素與首地址元素相同,所以偏移量為0。
4. 數(shù)組有什么排序?手寫(xiě)
冒泡排序,快速排序,二分算法
/*
1、冒泡排序(最經(jīng)典)
思想:每一次比較“相鄰(位置相鄰)”元素,如果它們不符合目標(biāo)順序(例如:從小到大),就交換它們,經(jīng)過(guò)多輪比較,最終實(shí)現(xiàn)排序。(例如:從小到大) 每一輪可以把最大的沉底,或最小的冒頂。過(guò)程:arr{6,9,2,9,1} 目標(biāo):從小到大
第一輪:第1次,arr[0]與arr[1],6>9不成立,滿(mǎn)足目標(biāo)要求,不交換第2次,arr[1]與arr[2],9>2成立,不滿(mǎn)足目標(biāo)要求,交換arr[1]與arr[2] {6,2,9,9,1}第3次,arr[2]與arr[3],9>9不成立,滿(mǎn)足目標(biāo)要求,不交換第4次,arr[3]與arr[4],9>1成立,不滿(mǎn)足目標(biāo)要求,交換arr[3]與arr[4] {6,2,9,1,9}第一輪所有元素{6,9,2,9,1}已經(jīng)都參與了比較,結(jié)束。第一輪的結(jié)果:第“一”最大值9沉底(本次是后面的9沉底),即到{6,2,9,1,9}元素的最右邊
第二輪:第1次,arr[0]與arr[1],6>2成立,不滿(mǎn)足目標(biāo)要求,交換arr[0]與arr[1] {2,6,9,1,9}第2次,arr[1]與arr[2],6>9不成立,滿(mǎn)足目標(biāo)要求,不交換第3次:arr[2]與arr[3],9>1成立,不滿(mǎn)足目標(biāo)要求,交換arr[2]與arr[3] {2,6,1,9,9}第二輪未排序的所有元素 {6,2,9,1}已經(jīng)都參與了比較,結(jié)束。第二輪的結(jié)果:第“二”最大值9沉底(本次是前面的9沉底),即到{2,6,1,9}元素的最右邊
第三輪:第1次,arr[0]與arr[1],2>6不成立,滿(mǎn)足目標(biāo)要求,不交換第2次,arr[1]與arr[2],6>1成立,不滿(mǎn)足目標(biāo)要求,交換arr[1]與arr[2] {2,1,6,9,9}第三輪未排序的所有元素{2,6,1}已經(jīng)都參與了比較,結(jié)束。第三輪的結(jié)果:第三最大值6沉底,即到 {2,1,6}元素的最右邊
第四輪:第1次,arr[0]與arr[1],2>1成立,不滿(mǎn)足目標(biāo)要求,交換arr[0]與arr[1] {1,2,6,9,9}第四輪未排序的所有元素{2,1}已經(jīng)都參與了比較,結(jié)束。第四輪的結(jié)果:第四最大值2沉底,即到{1,2}元素的最右邊
*/
public class Test19BubbleSort{public static void main(String[] args){int[] arr = {6,9,2,9,1};//目標(biāo):從小到大//冒泡排序的輪數(shù) = 元素的總個(gè)數(shù) - 1//輪數(shù)是多輪,每一輪比較的次數(shù)是多次,需要用到雙重循環(huán),即循環(huán)嵌套//外循環(huán)控制 輪數(shù),內(nèi)循環(huán)控制每一輪的比較次數(shù)和過(guò)程for(int i=1; i<arr.length; i++){ //循環(huán)次數(shù)是arr.length-1次/輪for(int j=0; j<arr.length-i; j++){//希望的是arr[j] < arr[j+1]if(arr[j] > arr[j+1]){//交換arr[j]與arr[j+1]int temp = arr[j];arr[j] = arr[j+1];arr[j+1] = temp;}}}//完成排序,遍歷結(jié)果for(int i=0; i<arr.length; i++){System.out.print(arr[i]+" ");}}
}
面向?qū)ο?#xff08;基礎(chǔ))
1. 代碼輸出
int[] arr = new int[]{1,2,3};System.out.println(arr);char[] arr1 = new char[]{'a','b','c'};System.out.println(arr1);boolean[] arr2 = new boolean[]{true,false,false};System.out.println(arr2);
int:地址
char:abc
boolean:地址
2. 代碼問(wèn)題
編寫(xiě)method(a,b),輸出a=100,b=200
public static void main(String[] args) {int a = 10;int b = 10;method(a,b);System.out.println("a="+a);System.out.println("b="+b);}
解答:
public static void main(String[] args) {int a = 10;int b = 10;method(a,b);System.out.println("a="+a);System.out.println("b="+b);}public static void method(int a,int b){a=a*10;b=b*20;System.out.println("a="+a);System.out.println("b="+b);System.exit(0);//強(qiáng)制退出}
-
形參是基本數(shù)據(jù)類(lèi)型:將實(shí)參基本數(shù)據(jù)類(lèi)型變量的“數(shù)據(jù)值”傳遞給形參
-
形參是引用數(shù)據(jù)類(lèi)型:將實(shí)參引用數(shù)據(jù)類(lèi)型變量的“地址值”傳遞給形參
3. 面向?qū)ο?#xff0c;面向過(guò)程理解?
面向過(guò)程的程序設(shè)計(jì)思想(Process-Oriented Programming)
,簡(jiǎn)稱(chēng)POP
關(guān)注的焦點(diǎn)是過(guò)程:過(guò)程就是操作數(shù)據(jù)的步驟。如果某個(gè)過(guò)程的實(shí)現(xiàn)代碼重復(fù)出現(xiàn),那么就可以把這個(gè)過(guò)程抽取為一個(gè)函數(shù)。這樣就可以大大簡(jiǎn)化冗余代碼,便于維護(hù)。
典型的語(yǔ)言:C語(yǔ)言
代碼結(jié)構(gòu):以函數(shù)為組織單位。
是一種“執(zhí)行者思維”,適合解決簡(jiǎn)單問(wèn)題。擴(kuò)展能力差、后期維護(hù)難度較大。
面向?qū)ο蟮某绦蛟O(shè)計(jì)思想( Object Oriented Programming)
,簡(jiǎn)稱(chēng)OOP
關(guān)注的焦點(diǎn)是類(lèi):在計(jì)算機(jī)程序設(shè)計(jì)過(guò)程中,參照現(xiàn)實(shí)中事物,將事物的屬性特征、行為特征抽象出來(lái),用類(lèi)來(lái)表示。
典型的語(yǔ)言:Java、C#、C++、Python、Ruby和PHP等
代碼結(jié)構(gòu):以類(lèi)為組織單位。每種事物都具備自己的屬性和行為/功能。
是一種“設(shè)計(jì)者思維”,適合解決復(fù)雜問(wèn)題。代碼擴(kuò)展性強(qiáng)、可維護(hù)性高。
4. Java引用類(lèi)型有幾種?
類(lèi),數(shù)組,接口,枚舉,記錄,注解
5. 類(lèi)和對(duì)象的區(qū)別?
類(lèi)是抽象的
對(duì)象是具體的,是類(lèi)的實(shí)例
6. 對(duì)象存在Java內(nèi)存的哪塊區(qū)域里?
堆空間
7. private、缺省、protected、public的作用區(qū)域?
8. main方法的public能不能換成private,為什么?
能。當(dāng)修改以后就不能作為程序入口,就只是一個(gè)普通的方法。
9. 構(gòu)造方法和普通方法有什么區(qū)別?
編寫(xiě)代碼角度:聲明格式,作用均不同
字節(jié)碼文件角度:構(gòu)造器會(huì)以<init>()方法
的形態(tài)呈現(xiàn),用以初始化對(duì)象
10. 構(gòu)造器Constructor是否可以被overload?
可以
11. 無(wú)參構(gòu)造器和有參構(gòu)造器的作用和應(yīng)用?
初始化屬性
12. 成員變量和局部變量區(qū)別?
1、聲明位置和方式
(1)實(shí)例變量:在類(lèi)中方法外
(2)局部變量:在方法體{}中或方法的形參列表、代碼塊中
2、在內(nèi)存中存儲(chǔ)的位置不同
(1)實(shí)例變量:堆
(2)局部變量:棧
3、生命周期
(1)實(shí)例變量:和對(duì)象的生命周期一樣,隨著對(duì)象的創(chuàng)建而存在,隨著對(duì)象被GC回收而消亡,而且每一個(gè)對(duì)象的實(shí)例變量是獨(dú)立的。
(2)局部變量:和方法調(diào)用的生命周期一樣,每一次方法被調(diào)用而在存在,隨著方法執(zhí)行的結(jié)束而消亡,而且每一次方法調(diào)用都是獨(dú)立。
4、作用域
(1)實(shí)例變量:通過(guò)對(duì)象就可以使用,本類(lèi)中直接調(diào)用,其他類(lèi)中“對(duì)象.實(shí)例變量”
(2)局部變量:出了作用域就不能使用
5、修飾符(后面來(lái)講)
(1)實(shí)例變量:public,protected,private,final,volatile,transient等
(2)局部變量:final
6、默認(rèn)值
(1)實(shí)例變量:有默認(rèn)值
(2)局部變量:沒(méi)有,必須手動(dòng)初始化。其中的形參比較特殊,靠實(shí)參給它初始化。
13. 變量賦值和構(gòu)造方法加載的優(yōu)先級(jí)問(wèn)題?
變量顯式賦值先于構(gòu)造器賦值(字節(jié)碼文件)
面向?qū)ο?#xff08;進(jìn)階)
1. 區(qū)分方法重載和重寫(xiě)?
重載:方法名相同,形參列表不同。不看返回值類(lèi)型。
重寫(xiě):不同類(lèi)中,繼承以后,子類(lèi)覆蓋父類(lèi)中方法
2. 區(qū)分 == 和 equals()
-
==
既可以比較基本類(lèi)型
也可以比較引用類(lèi)型
。對(duì)于基本類(lèi)型就是比較值
,對(duì)于引用類(lèi)型就是比較內(nèi)存地址
-
equals
只能用在引用數(shù)據(jù)類(lèi)型
上,它是屬于java.lang.Object類(lèi)里面的方法,如果該方法沒(méi)有被重寫(xiě)過(guò)默認(rèn)也是==;我們可以看到String等類(lèi)的equals方法是被重寫(xiě)過(guò)的,而且String類(lèi)在日常開(kāi)發(fā)中用的比較多,久而久之,形成了equals是比較值的錯(cuò)誤觀點(diǎn)。 -
具體要看自定義類(lèi)里有沒(méi)有重寫(xiě)Object的equals方法來(lái)判斷。
-
通常情況下,重寫(xiě)equals方法,會(huì)比較類(lèi)中的相應(yīng)屬性是否都相等。
3. 父類(lèi)哪些成員可以被繼承?屬性可以被繼承嗎?
父類(lèi)屬性、方法、屬性可以被繼承。
構(gòu)造器可以被子類(lèi)調(diào)用
4. overload是否可以改變返回值類(lèi)型?
不可以。返回值不是重載需要改變的。
5. 構(gòu)造器可以被overrid?
不可以。構(gòu)造器可以被重載。
6. 為什么要重載,隨便命名一個(gè)別的函數(shù)不行嗎?
見(jiàn)名知意
7. super和this的區(qū)別?
this
關(guān)鍵字引用的是當(dāng)前對(duì)象。它用于引用當(dāng)前對(duì)象的實(shí)例變量和方法。使用this關(guān)鍵字可以讓我們避免在代碼中重復(fù)使用相同的變量名。super
關(guān)鍵字用于引用父類(lèi)的成員(實(shí)例變量或方法)。它通常用于子類(lèi)中,當(dāng)子類(lèi)需要訪問(wèn)父類(lèi)的成員時(shí)。使用super可以明確地引用父類(lèi)的成員,避免二義性。
8. 多態(tài)的理解?
廣義理解:子類(lèi)對(duì)象的多態(tài)性、方法的重寫(xiě)、方法的重載
格式:Object obj = new String("hello");
父類(lèi)的引用指向子類(lèi)對(duì)象
多態(tài)好處:減少了大量的重載方法定義
9. 多態(tài)new出來(lái)的對(duì)象和不多態(tài)new出來(lái)的對(duì)象有什么區(qū)別?
Person p = new Man();
虛對(duì)象方法,屏蔽了子類(lèi)Man類(lèi)特有的屬性和方法
Person p = new Person();
10. 重寫(xiě)equals方法注意什么?
明確判定兩個(gè)對(duì)象實(shí)體equals()標(biāo)準(zhǔn)。是否需要所有屬性參與。
對(duì)象的屬性且為自定義類(lèi)型,此屬性也需要重寫(xiě)equals()
11. Java中所有的父類(lèi)是什么?都有什么方法?
Object類(lèi)
equals(),toString(),clone(),finalize(),getClass(),hashCode()
面向?qū)ο?#xff08;高級(jí))
1. 靜態(tài)變量和實(shí)例變量區(qū)別?
- 個(gè)數(shù)
靜態(tài)變量:在內(nèi)存空間中只有一份,被類(lèi)的多個(gè)對(duì)象共享
實(shí)例變量:類(lèi)的每一個(gè)實(shí)例(或?qū)ο?#xff09;都保存著一份實(shí)例變量
- 內(nèi)存位置
靜態(tài)變量:jdk6之前存放在方法區(qū),之后存放在堆空間
實(shí)例變量:存放在堆空間的對(duì)象實(shí)體中
- 加載時(shí)機(jī)
靜態(tài)變量:隨著類(lèi)的加載而加載,由于類(lèi)只會(huì)加載一次,所以靜態(tài)變量也只有一份
實(shí)例變量:隨著對(duì)象創(chuàng)建而加載,每個(gè)對(duì)象擁有一份實(shí)例變量
- 調(diào)用者
靜態(tài)變量:可以被類(lèi)直接調(diào)用,也可以使用對(duì)象調(diào)用
實(shí)例變量:只能使用對(duì)象進(jìn)行調(diào)用
-
判斷是否可以調(diào)用——>從生命周期的角度
-
消亡時(shí)機(jī)
靜態(tài)變量:隨著類(lèi)的卸載而消亡
實(shí)例變量:隨著對(duì)象的消亡而消亡
2. 開(kāi)發(fā)中,什么時(shí)候需要將屬性聲明為靜態(tài)的方法?
判斷當(dāng)前類(lèi)的多個(gè)實(shí)例是否能共享此成員變量,且此成員變量的值是相同的;開(kāi)發(fā)中常將一些常量聲明是靜態(tài)的
方法內(nèi)操作的變量都是靜態(tài)變量而非實(shí)例變量,則此方法將聲明為靜態(tài)方法;
常常將工具類(lèi)聲明為靜態(tài)方法
3. 為什么抽象類(lèi)不可以使用final關(guān)鍵字聲明?
因?yàn)槌橄箢?lèi)不能實(shí)例化,只能被繼承,但final的類(lèi)規(guī)定不能被繼承
詳情
4. 一個(gè)抽象類(lèi)中可以定義構(gòu)造器嗎?
可以,因?yàn)楫?dāng)子類(lèi)繼承父類(lèi)時(shí),需要調(diào)用父類(lèi)的構(gòu)造器。
5.是否可以這樣理解:抽象類(lèi)就是比普通類(lèi)多定義了抽象方法,除了不能直接進(jìn)行類(lèi)的實(shí)例化操作之外,沒(méi)有任何不同?
抽象類(lèi)里不一定有抽象方法,但抽象方法所屬的類(lèi)一定是抽象類(lèi)。
詳情
6. 靜態(tài)屬性和靜態(tài)方法是否可以被繼承?是否可以被重寫(xiě)?
靜態(tài)方法不能被重寫(xiě),可以被重載,不存在多態(tài)性。
7. 是否可以從一個(gè)static方法內(nèi)部發(fā)出對(duì)非static方法的調(diào)用?
只能通過(guò)對(duì)象來(lái)對(duì)非靜態(tài)方法的調(diào)用。
8. 被static修飾的成員(類(lèi)、方法、成員變量)能否再使用private進(jìn)行修飾?
可以。除了代碼塊
9. 知道哪些設(shè)計(jì)模式?
單例模式、模板方法、享元設(shè)計(jì)模式
10. main()方法的public能不能換成private?
可以改,但是改完以后就不是程序入口。
11. 靜態(tài)代碼塊、普通代碼塊、構(gòu)造方法,從類(lèi)加載開(kāi)始的執(zhí)行順序?
靜態(tài)代碼塊—>普通代碼塊—>構(gòu)造器
12. 判斷:使用final修飾一個(gè)變量時(shí),引用不能改變,引用指向的對(duì)象可以改變
√
引用不能變,引用指向的對(duì)象實(shí)體中的屬性若果沒(méi)有使用final修飾則可以改變。
13. final不能修飾構(gòu)造器?
是
14. final或static final修飾成員變量能不能進(jìn)行+1操作?
不能
15. 什么是抽象類(lèi)?如何識(shí)別一個(gè)抽象類(lèi)?
使用abstract修飾。
16. 為什么不能用abstract修飾屬性、私有方法、構(gòu)造器、靜態(tài)方法、final方法?
語(yǔ)言的自洽。
17. 接口和抽象類(lèi)的區(qū)別?
18. 接口是否可以繼承接口?抽象類(lèi)是否可以繼承接口?抽象類(lèi)是否可以繼承實(shí)現(xiàn)類(lèi)?
是,是,是
19. 接口可以有自己的屬性嗎?
可以,必須為public,static,final
20. 訪問(wèn)接口的默認(rèn)方法如何使用?
使用實(shí)現(xiàn)類(lèi)的對(duì)象進(jìn)行調(diào)用,而且實(shí)現(xiàn)還可以重寫(xiě)此默認(rèn)方法。
21. 內(nèi)部類(lèi)有哪幾種?
22. 枚舉可以繼承嗎?
使用enum定義的,其父類(lèi)就是enum類(lèi),就不要繼承其他類(lèi)了。
23. 面向?qū)ο蟮睦斫?#xff1f;
- 面向?qū)ο髢蓚€(gè)要素:類(lèi),對(duì)象
- 面向?qū)ο笕筇卣?/li>
- 接口(類(lèi)可以實(shí)現(xiàn)多個(gè)接口)
異常處理
1. Java的異常處理機(jī)制
- try-catch-finally
- throws
2. 異常兩種類(lèi)型,Error和Exception區(qū)別?
Error: 在Java中,Error 是指那些表示系統(tǒng)級(jí)、不可恢復(fù)的錯(cuò)誤的異常。這些錯(cuò)誤通常是由Java虛擬機(jī)(JVM)在運(yùn)行時(shí)拋出的,而不是由程序代碼直接拋出的。常見(jiàn)的 Error 類(lèi)型包括 OutOfMemoryError、StackOverflowError 和 ThreadDeath。
Exception: 與 Error 不同,Exception 是指那些程序代碼可以拋出的異常,也是開(kāi)發(fā)人員需要關(guān)注和處理的異常。Exception 可以進(jìn)一步分為幾種不同的類(lèi)型,如 RuntimeException 和 CheckedException。
Error 和 Exception 的主要區(qū)別在于它們的用途和行為。Error 表示系統(tǒng)級(jí)的、不可恢復(fù)的錯(cuò)誤,通常由JVM在運(yùn)行時(shí)拋出,不需要開(kāi)發(fā)人員顯式處理;而 Exception 表示程序代碼可以拋出的異常,通常由程序邏輯錯(cuò)誤或I/O操作失敗導(dǎo)致,需要開(kāi)發(fā)人員顯式處理。
3. 運(yùn)行時(shí)異常和一般異常有何異同?
RuntimeException:
- 編譯可以通過(guò),運(yùn)行時(shí)可能拋出,出現(xiàn)的概率高,一般針對(duì)于運(yùn)行時(shí)異常都不做處理。
Exception
- 編譯不能通過(guò),必須在編譯之前考慮異常的處理,不處理編譯不能通過(guò)。
4. 如果不使用try-catch,程序出現(xiàn)異常會(huì)如何?
如果不使用則在出現(xiàn)異常對(duì)象后會(huì)拋出此對(duì)象,如果沒(méi)有處理方案,就會(huì)終止程序的執(zhí)行。
5. try-catch捕捉的是什么異常?
Exception,非Error