1凉泄、Java起源
java Sun公司的,后期被甲骨文收購蚯根。
Java之父后众,詹姆斯高斯林, Java語言早起名字叫做:Oak颅拦,由C++演變而來蒂誉;
Java 版本:jdk6 /7 最常用, 最新版本10距帅;
JavaSE(標(biāo)準(zhǔn)版,用于桌面應(yīng)用開發(fā))
JavaEE(企業(yè)版碌秸,用于企業(yè)級應(yīng)用開發(fā))
JavaME(微縮版绍移,用于早期嵌入式開發(fā))
即Java應(yīng)用程序接口
常用API
StringBuffer和StringBuilder用法
StringBuilder(線程不安全)/StringBuffer(線程安全)是可變長度字符串
使用append方法拼接字符串,效率高
默認(rèn)有16位緩沖區(qū)
使用capacity方法獲取真實長度蹂窖,length方法獲取字符個數(shù)轧抗; append方法拼接字符串;
String類型和StringBuffer的主要性能區(qū)別:String類型和StringBuffer的主要性能區(qū)別:?
String是不可變的對象, 因此在每次對String 類型進行改變的時候瞬测,都會生成一個新的 String 對象横媚,然后將指針指向新的 String 對象,所以經(jīng)常改變內(nèi)容的字符串最好不要用 String 月趟,因為每次生成對象都會對系統(tǒng)性能產(chǎn)生影響灯蝴,特別當(dāng)內(nèi)存中無引用對象多了以后, JVM 的 GC 就會開始工作孝宗,性能就會降低穷躁。
使用 StringBuffer 類時,每次都會對 StringBuffer 對象本身進行操作碳褒,而不是生成新的對象并改變對象引用折砸。所以多數(shù)情況下推薦使用 StringBuffer 看疗,特別是字符串對象經(jīng)常改變的情況下沙峻。
在現(xiàn)實的模塊化編程中,負(fù)責(zé)某一模塊的程序員不一定能清晰地判斷該模塊是否會放入多線程的環(huán)境中運行两芳,因此:除非確定系統(tǒng)的瓶頸是在 StringBuffer 上摔寨,并且確定你的模塊不會運行在多線程模式下,才可以采用StringBuilder怖辆;否則還是用StringBuffer是复。?
性能效率:StringBuilder>StringBuffer>String。
Math相關(guān)
round(double d) 四舍五入取整返回long/int
floor(double d) 向下取整返回double
ceil(double d) 向上取整返回double
abs(double/int )獲取絕對值
random()獲取0-1之間隨機小數(shù)竖螃,非0和1
Random隨機數(shù)?
nextInt(int i)獲取0-i之間的隨機整數(shù)
nextDouble()獲取0-1之間隨機小數(shù)淑廊,非0和1
java.math.BigDecimal?
比double更精確的一種類型;常用于操作金額特咆,匯率等季惩;
常用方法:?
add
subtract
multiply
divide
setScale
SimpleDateFormat用法?
format(日期對象) 將日期格式化為指定格式字符串
parse(指定格式的日期字符串)將字符串轉(zhuǎn)為Date 注意:格式必須跟SimpleDateFormat指定格式一致否則:ParseException
java.util.Date?
將1999-10-10格式字符串轉(zhuǎn)為日期對象
new Date()獲取當(dāng)前系統(tǒng)時間
getTime()獲取毫秒數(shù)
java.sql.Date?
只用于獲取系統(tǒng)當(dāng)前時間
Calendar?
在Calendar類中,月份的值為實際的月份值減1
獲得的星期的值和Date類不一樣腻格。在Calendar類中画拾,周日是1,周一是2菜职,周二是3青抛,依次類推
總之多查API總之多查API
面向?qū)ο蟆?/p>
可移植性(一處編譯酬核,多處執(zhí)行)蜜另、
跨平臺性适室、
安全性(1、摒棄指針 2举瑰、GC垃圾回收機制:自動釋放回收長時間不使用對象的內(nèi)存)?
并發(fā)性(支持多線程)
JDK(Java Development Kit?Java開發(fā)工具包),JDK是提供給Java開發(fā)人員使用的嘶居,其中包含了java的開發(fā)工具罪帖,也包括了JRE。其中的開發(fā)工具:編譯工具(javac.exe) 打包工具(jar.exe)邮屁、執(zhí)行工具(java.exe)等
JRE(Java Runtime Environment Java運行環(huán)境) 整袁,包括Java虛擬機(JVM Java Virtual Machine)和Java程序所需的核心類庫等冀泻,如果想要運行一個開發(fā)好的Java程序赖欣,計算機中只需要安裝JRE即可红选。
6寞钥、配置環(huán)境變量(在任何位置都可以找到j(luò)ava環(huán)境)
最簡單配置方式:?
系統(tǒng)環(huán)境變量:PATH:C:\Program Files\Java\jdk1.7.0_13\bin; 后面保留
CLASSPATH:C:\Program Files\Java\jdk1.7.0_13\lib;.后面保留
或者:
PATH: %JAVA_HOME%\bin;
CLASSPATH:%JAVA_HOME%\lib;.
也可以設(shè)置JAVA_HOME?
JAVA_HOME :C:\Program Files\Java\jdk1.7.0_13
驗證是否配置成功: 進入命令行窗口询枚, 執(zhí)行java -version颅崩,成功顯示版本號即成功配置
Eclipse
MyEclipse
IntelliJ IDEA
java源文件戈钢,編譯器(javac命令)進行編譯
生成class文件(存放的字節(jié)碼)
然后解析器(執(zhí)行java命令)解析class文件
最后生成計算機識別的二進制編碼
1、引用數(shù)據(jù)類型:數(shù)組殉了、類开仰、接口。
2薪铜、基本數(shù)據(jù)類型:?
整型:byte众弓、short、int隔箍、long (8位1個字節(jié)谓娃、16/2 、32/4蜒滩、64/8)
浮點型:float滨达、double(32/4 、64/8)
字符型:char(16/2)
布爾類型:boolean
級別從低到高為:?byte,char,short(這三個平級)–>int–>float–>long–>double
自動類型轉(zhuǎn)換:從低級別到高級別帮掉,系統(tǒng)自動轉(zhuǎn)的弦悉;
強制類型轉(zhuǎn)換:什么情況下使用?把一個高級別的數(shù)賦給一個別該數(shù)的級別低的變量;
Java中默認(rèn)整數(shù)為int類型蟆炊, 小數(shù)為double類型稽莉;?
字符char是否可以存放一個漢字?可以涩搓,因為一個字符占2個字節(jié)污秆,一個漢字兩個字節(jié)劈猪;?
整型初始值默認(rèn)0 浮點型默認(rèn)0.0 布爾類型默認(rèn)false 引用數(shù)據(jù)類型默認(rèn)null
10、java中是否有g(shù)oto良拼? 有战得,是保留字
可以由數(shù)字庸推、字母常侦、下劃線、$符號組成贬媒,但是不能是關(guān)鍵詞聋亡,不能以數(shù)字開頭
全局變量(成員變量、類變量)?
可以供當(dāng)前類的多個方法使用际乘;
定義在類中坡倔;
成員變量存在于堆內(nèi)存中,隨著對象的產(chǎn)生而存在脖含,消失而消失罪塔。
局部變量?
定義在方法中或者方法參數(shù)
只能作用于當(dāng)前方法
沒有初始值
局部變量存在于棧內(nèi)存中,隨著所屬區(qū)域的運行而存在养葵,結(jié)束而釋放征堪。
常量:?只能聲明在類中,使用final關(guān)鍵詞聲明港柜,必須賦初始值请契,不能再次賦值咳榜;
12夏醉、Java中數(shù)據(jù)類型轉(zhuǎn)換:
隱式轉(zhuǎn)換:系統(tǒng)默認(rèn)將其轉(zhuǎn)換為我們需要的數(shù)據(jù)類型;
強制轉(zhuǎn)換:=號兩邊數(shù)據(jù)類型不同時涌韩,可以通過,前面加(類型)轉(zhuǎn)換
例如:int j=10;float f=100.123; int j=(int)f;
基本數(shù)據(jù)類型之間規(guī)則:
(1)整型之間數(shù)據(jù)類型強制轉(zhuǎn)換規(guī)則:long->int->short->byte
(2)浮點型之間:double->float
(3)char和整型 : 整型->char
(4)char和浮點型: 浮點型->char
(5)浮點型和整型 : (double/float)->(long/int/short/byte) 且小數(shù)點舍去
+
-
*
/
%?
任何整數(shù)模2不是0就是1,所以只要改變被模數(shù)就可以實現(xiàn)開關(guān)運算臣樱。
位運算符:用于操作二進制位的運算符靶擦。?
& | ^ << >> >>>(無符號右移)
注意:
(1)+號拼字符串:”字符串”+數(shù)字+數(shù)字 和”字符串”+(數(shù)字+數(shù)字)
(2)分母不可以為0 否則報異常:ArithmeticException
(3)java中數(shù)值運算時,位數(shù)多的與位數(shù)少的雇毫,做運算玄捕,最終結(jié)果類型為位數(shù)多的(long+double 返回double) 整型和浮點型運算,此時返回浮點型
(4)java中1/2值為多少棚放?02的三次冪如何計算枚粘?2<<2;java中1/2值為多少?02的三次冪如何計算飘蚯?2<<2;
i++ 表示i先參與運算馍迄,然后在自身加1
++i 表示i先自身加1 然后在被使用
類似的 - -運算也是一樣的
注意!注意!下面程序是否有錯福也??
short i=10;?
i=i+1;(錯誤攀圈,因為需要強轉(zhuǎn) short+int結(jié)果還是int類型)?
i+=1;(正確)
邏輯運算符(也叫作短路運算符):
||?
或暴凑,兩邊條件有一個滿足true,則結(jié)果為true
&&
與赘来, &&兩邊條件必須返回boolean類型现喳,兩邊同時為true則結(jié)果為true
例如:
14、判斷語句&循環(huán)語句break&continue
判斷語句
if(條件){}
switch選擇判斷語句點擊查看更多
循環(huán)語句
for(;條件;){循環(huán)體}
while(){}
do{}while()
break 表示退出整個循環(huán)或者判斷
continue 只能用于循環(huán)體中犬辰,表示退出當(dāng)前循環(huán)拿穴,繼續(xù)下一次循環(huán)
16忧风、包裝類:即基本數(shù)據(jù)類型所對應(yīng)的類默色;
int/double/float/byte/long/char/boolean 是一種值表示;
Integer/Double/Float/Byte/Long/Character/Boolean 包裝類
常用方法:
valueOf(“”)
valueOf(int i)
toString()
parseInt(“”);
注意異常!注意異常!?NumberFormatException
==比較即比較內(nèi)容也比較地址是否相同腿宰;
equals方法,比較兩個對象內(nèi)容是否相同
注意:
(1)字符串比較缘厢,不允許用== 吃度,只能通過equals方法
(2)如果Integer和Integer/int比較具體是否相等,此時絕對不允許使用==
補充:127 128 問題:?
(3)注意:數(shù)字贴硫,和字符串比較是否相等椿每;
先定義间护、開辟空間、賦值在使用
java中數(shù)組長度不可變
數(shù)組下標(biāo)從0開始
數(shù)組的定義:
(1)?String[] items_0=null;//先定義 items_0=new String[4];//開辟空間
(2)String[] items_1=new String[4];
(3)String[] items_2={"JONES","SMITH","XIAOMING","SMI"};
(4)?String[] items_3=new String[]{"SMITH","JINES","DSFDSF"};
如何不通過第三個變量交換兩個變量的值挖诸?如何不通過第三個變量交換兩個變量的值汁尺?
1 ?inta=10;
2 ?int b=20;
3 ?a=a+b;//a:30b:20
4 ??b=a-b;//a:30 b:10
5 ?a=a-b;//a:20 b:10 ?
二維數(shù)組:
1 ?String[][] items=new String[2][3];
2 ?//items[0]={"","",""};錯誤的
3 ?// items[0]=new String[4];對
數(shù)組的復(fù)制?
System.arraycopy(strArr,0, strArr1, 0, 3);//從左到右參數(shù)意義:從哪個數(shù)組,從哪開始復(fù)制多律,復(fù)制到哪痴突?開始位置,復(fù)制多長
System.out.println("copyOf復(fù)制:"+Arrays.toString(Arrays.copyOf(strArr, 3)));
數(shù)組的排序?
Arrays.sort(strArr1);
屬性:即一類事物具有的共有特點或者特性相味;程序中為全局變量(成員變量)
方法:一類事物具有的動作拾积;
類的定義和使用
class 類名稱{?
屬性?
方法?
}
使用關(guān)鍵字new就可以創(chuàng)建類對象,使用對象.方法,對象.屬性就可完成調(diào)用
創(chuàng)建一個對象都在內(nèi)存中做了什么事情殷勘?創(chuàng)建一個對象都在內(nèi)存中做了什么事情此再??
1:先將硬盤上指定位置的Person.class文件加載進內(nèi)存。
2:執(zhí)行main方法時玲销,在棧內(nèi)存中開辟了main方法的空間(壓棧-進棧)输拇,然后在main方法的棧區(qū)分配了一個變量p。
3:在堆內(nèi)存中開辟一個實體空間贤斜,分配了一個內(nèi)存首地址值策吠。new
4:在該實體空間中進行屬性的空間分配,并進行了默認(rèn)初始化瘩绒。
5:對空間中的屬性進行顯示初始化猴抹。
6:進行實體的構(gòu)造代碼塊初始化。
7:調(diào)用該實體對應(yīng)的構(gòu)造方法锁荔,進行構(gòu)造方法初始化蟀给。()
8:將首地址賦值給p ,p變量就引用了該實體阳堕。(指向了該對象)
抽象類:?abstract
抽象類的特點:?
1:抽象方法只能定義在抽象類中跋理,抽象類和抽象方法必須由abstract關(guān)鍵字修飾(可以描述類和方法,不可以描述變量)恬总。
2:抽象方法只定義方法聲明前普,并不定義方法實現(xiàn)。
3:抽象類不可以被創(chuàng)建對象(實例化)壹堰。
4:只有通過子類繼承抽象類并覆蓋了抽象類中的所有抽象方法后拭卿,該子類才可以實例化。否則贱纠,該子類還是一個抽象類峻厚。
抽象類的細(xì)節(jié):?
1:抽象類中是否有構(gòu)造方法?有并巍,用于給子類對象進行初始化目木。
2:抽象類中是否可以定義非抽象方法?可以懊渡。其實,抽象類和一般類沒有太大的區(qū)別军拟,都是在描述事物剃执,只不過抽象類在描述事物時,有些功能不具體懈息。所以抽象類和一般類在定義上肾档,都是需要定義屬性和行為的。只不過,比一般類多了一個抽象方法怒见。而且比一般類少了一個創(chuàng)建對象的部分俗慈。
3:抽象關(guān)鍵字abstract和哪些不可以共存?final ,private , static
4:抽象類中可不可以不定義抽象方法遣耍?可以闺阱。抽象方法目的僅僅為了不讓該類創(chuàng)建對象。
接口:interface?
接口的特點:?
1舵变、接口是特殊抽象類酣溃,所有方法都是抽象方法
2、不能被實例化纪隙,方法abstract關(guān)鍵詞可以省略赊豌,但實際上還是抽象方法
3、變量都是是常量绵咱,省略final關(guān)鍵詞碘饼;
4、接口不能被實例化悲伶,只能通過implements來實現(xiàn)接口派昧,一個實現(xiàn)類,可以實現(xiàn)多個接口
5拢切、接口可以繼承接口蒂萎。
6、實現(xiàn)以后要重寫所有抽象方法淮椰,包括接口繼承接口中的抽象方法
接口的好處:?
1五慈、java由于單繼承,接口可以彌補無法多繼承的缺點
2主穗、好的程序要求高內(nèi)聚低耦合泻拦,接口可以實現(xiàn)程序的解耦
3、定義一種規(guī)范
抽象類和接口的區(qū)別(4點):
抽象類只能被繼承忽媒,而且只能單繼承争拐。
接口需要被實現(xiàn),而且可以多實現(xiàn)晦雨。?
抽象類中可以定義非抽象方法架曹,子類可以直接繼承使用。
接口中都有抽象方法闹瞧,需要子類去實現(xiàn)绑雄。?
抽象類使用的是 is a 關(guān)系。
接口使用的 like a 關(guān)系奥邮。?
抽象類的成員修飾符可以自定義万牺。
接口中的成員修飾符是固定的罗珍。全都是public的。
面向?qū)ο螅杭捶治瞿骋粋€事件中有哪些對象脚粟,分析他們的動作覆旱,具有的屬性特點,通過這種方式來解決問題核无;
面向過程: 側(cè)重點在于步驟扣唱,通過一步一步調(diào)用方法來實現(xiàn)操作
對象實例化: new 類()厕宗,即對象的創(chuàng)建画舌;
static 聲明方法為靜態(tài)方法已慢,聲明屬性為靜態(tài)屬性曲聂;
static 關(guān)鍵詞:?
1、static 修飾方法佑惠,該方法叫做靜態(tài)方法(也叫做類方法)朋腋,可直接通過這個類的類名打點直接調(diào)用;
2膜楷、靜態(tài)方法中不能使用this/super關(guān)鍵詞旭咽,靜態(tài)方法不能直接調(diào)用當(dāng)前類中的非靜態(tài)方法(或非靜態(tài)屬性),必須通過new實例化后在調(diào)用赌厅。
3穷绵、static聲明的方法和屬性,該對象已經(jīng)被實例化特愿,且只能被實例化一次(單例模式)
4仲墨、static修飾的屬性,被相同類的不同實例所共享揍障;
表示當(dāng)前類對象,表示當(dāng)前類對象毒嫡,不能用于static聲明的方法中癌蚁,?常用于區(qū)分全局變量和局部變量同名
(1)使用super關(guān)鍵字,super代表父類對象super代表父類對象兜畸,只能用在子類中
(2)可在子類構(gòu)造方法中調(diào)用且必須是該方法中第一句
(3)不能使用在static修飾的方法中
(4)super的用處?
訪問父類構(gòu)造方法?
super();
super(name);
訪問父類屬性?
super.name;
訪問父類方法?
super.print();
OOA面向?qū)ο蠓治?/p>
OOD面向?qū)ο笤O(shè)計
OOP面向?qū)ο缶幊?/p>
繼承?
繼承就是類之間的繼承洽洁,使用extends來實現(xiàn),從而實現(xiàn)代碼的復(fù)用
多態(tài)?
某一種事物有不同的具體的體現(xiàn)就是多態(tài)菲嘴。
多態(tài)體現(xiàn)在:重寫、重載、對象實例化龄坪。
多態(tài)的好處:提高了程序的擴展性昭雌。
多態(tài)的弊端:當(dāng)父類引用指向子類對象時,雖然提高了擴展性健田,但是只能訪問父類中具備的方法烛卧,不可以訪問子類中特有的方法。(前期不能使用后期產(chǎn)生的功能妓局,即訪問的局限性)
封裝?
是指隱藏對象的屬性和實現(xiàn)細(xì)節(jié)总放,僅對外提供公共訪問方式。
好處:將變化隔離好爬;便于使用局雄;提高重用性;安全性存炮。
封裝原則:將不需要對外提供的內(nèi)容都隱藏起來炬搭,把屬性都隱藏,提供公共方法對其訪問穆桂。
該方法與類名相同;沒有返回值也不可以使用void 聲明
默認(rèn)public修飾
任何一個類享完,都有一個無參數(shù)的構(gòu)造方法灼芭; 對象實例化時被執(zhí)行
構(gòu)造方法和普通方法的區(qū)別?
構(gòu)造方法是在對象創(chuàng)建時,就被調(diào)用般又,構(gòu)造方法常用于初始化成員變量彼绷,而且初始化動作只執(zhí)行一次。
一般方法倒源,是對象創(chuàng)建后苛预,需要調(diào)用才執(zhí)行,可以被調(diào)用多次笋熬。
單一類中:
1.初始化塊2. 靜態(tài)初始化塊3.構(gòu)造方法
執(zhí)行順序:靜態(tài)初始化塊(永遠(yuǎn)只被執(zhí)行一次) 初始化塊 構(gòu)造方法
父類和子類中都有靜態(tài)代碼塊,非靜態(tài)代碼塊胳螟,構(gòu)造方法時昔馋。
初始化子類對象時,調(diào)用順序:父類靜態(tài)糖耸,子類靜態(tài)秘遏,父類非靜態(tài),父類構(gòu)造嘉竟,子類非靜態(tài)邦危,子類構(gòu)造
當(dāng)前類中方法名相同,參數(shù)個數(shù)或者參數(shù)類型不同倦蚪;
為什么重載希坚,重載有什么好處??
了解:好處便于記憶篩選陵且,體現(xiàn)了java的多態(tài)
發(fā)生在子類中,子類的方法與父類方法名慕购、參數(shù)個數(shù)聊疲、參數(shù)類型,返回值類型完全相同沪悲,并且訪問權(quán)限不能嚴(yán)于父類
什么時候使用重寫获洲??
1、當(dāng)父類方法無法滿足子類需求可训,此時可以在子類中重寫父類方法
2昌妹、如果開發(fā)時,需要對父類方法功能拓展握截,此時還不想修改父類程序?
則使用繼承(定義一個類繼承父類)飞崖,然后通過子類重寫該方法,?
然后其他類進行調(diào)用這個子類方法谨胞;
子類繼承父類,可以繼承父類中非私有的方法和屬性胯努;
構(gòu)造方法無法被繼承牢裳;
final修飾的類無法被繼承;
Java中是單繼承叶沛,所有類的超類(父類/基類)是java.lang.Object類
子類被實例化時蒲讯,先實例化父類對象
java中是單繼承,即一個類只能有一個父類灰署;所有類的父類(超類)是java.lang.Object
繼承的好處:
1判帮、簡化子類代碼
2、使用繼承可以不修改父類程序前提溉箕,完成對父類方法的拓展
缺點:
1晦墙、打破了封裝(封裝的目的是隱藏),父類向子類暴露了細(xì)節(jié)
2肴茄、過多的繼承晌畅,會導(dǎo)致程序不便于維護
3、白盒重用寡痰,因為基類的內(nèi)部細(xì)節(jié)通常對子類是可見的
Object位于java.lang包下面
其中常用的方法有:?
toString();?返回當(dāng)前對象本身的有關(guān)信息棋凳,按字符串對象返回
equals();?比較兩個對象是否是同一個對象,是則返回true
hashCode(); 返回該對象的哈希代碼值
getClass(); 獲取當(dāng)前對象所屬的類信息谓谦,返回Class對象
equals方法的重寫:?
什么時候重寫equals方法贫橙??
比較兩個對象時候贪婉,需要重寫equals方法反粥,重新定義比較規(guī)則
toString方法重寫:?
重寫toString方法的目的是:讓對象以某個字符串形式表示
public static void main(String[] args){}
1)保證該類的獨立運行疲迂。
2)因為它是程序的入口才顿。
3)因為它在被jvm調(diào)用。
Public:訪問權(quán)限最大尤蒿。
static:不需要對象郑气,直接類名即可。
void:主方法沒有返回值腰池。
main:主方法特定的名稱尾组。
(String[] args):主方法的參數(shù),是一個字符串?dāng)?shù)組類型的參數(shù)示弓,jvm調(diào)用main方法時讳侨,傳遞的實際參數(shù)是 new String[0]。
注意:主方法的存在奏属,僅為該類是否需要獨立運行跨跨,如果不需要,主方法是不用定義的囱皿。
java分了5片內(nèi)存
1:寄存器。
2:本地方法區(qū)嘱腥。
3:方法區(qū)耕渴。
4:棧。
5:堆齿兔。
棧:存儲的都是局部變量 ( 方法中定義的變量橱脸,方法上的參數(shù),語句中的變量 )愧驱;只要數(shù)據(jù)運算完成所在的區(qū)域結(jié)束慰技,該數(shù)據(jù)就會被釋放。
堆:用于存儲數(shù)組和對象组砚,也就是實體吻商。啥是實體啊糟红?就是用于封裝多個數(shù)據(jù)的艾帐。
1:每一個實體都有內(nèi)存首地址值
2:堆內(nèi)存中的變量都有默認(rèn)初始化值乌叶。因為數(shù)據(jù)類型不同,值也不一樣柒爸。
3:垃圾回收機制准浴。
Java有8種基本類型乐横,每種基本類型又有對應(yīng)的包裝類型。在Java中今野,一切都以對象作為基礎(chǔ)葡公,但是基本類型并不是對象,如果想以對象的方式使用這8中基本類型条霜,可以將它們轉(zhuǎn)換為對應(yīng)的包裝類型催什。基本類型和包裝類型的對應(yīng)?
可以直接將整型賦給Integer對象宰睡,由編譯器來完成從int型到Integer類型的轉(zhuǎn)換蒲凶,這就叫自動裝箱。
與此對應(yīng)的拆内,自動拆箱就是可以將包裝類型轉(zhuǎn)換為基本類型旋圆,具體的轉(zhuǎn)換工作由編譯器來完成。
其他幾種基本類型的轉(zhuǎn)換也是類似的
異常?
異常即exception
異常:可以預(yù)知臂聋、可以通過修改程序來彌補”錯誤”,可避免的
錯誤?
錯誤:error
錯誤:無法預(yù)知的,系統(tǒng)級別的或南,程序員修改程序是無法修復(fù)的孩等;例如:系統(tǒng)宕機,JVM掛掉了
Java中的異常?
異常的種類:
1采够、編譯時異常(非運行時異常)?
程序編譯過程中產(chǎn)生的肄方, 如果有異常,則不會通過編譯蹬癌,必須手動的捕獲異橙ㄋ或者繼續(xù)拋出該異常;
2逝薪、運行時異常:
程序在運行過程中產(chǎn)生的隅要,不需要手動拋出或者捕獲,系統(tǒng)自動報出董济;
異常的處理?
功能拋出幾個異常,功能調(diào)用如果進行try處理,需要與之對應(yīng)的catch處理代碼塊廓啊,這樣的處理有針對性欢搜,拋幾個就處理幾個。
特殊情況:try對應(yīng)多個catch時谴轮,如果有父類的catch語句塊炒瘟,一定要放在下面。
throws 和throw
throws 方法聲明時使用第步,表示該方法可能產(chǎn)生的異常疮装,拋出,誰調(diào)用誰捕獲處理雌续,throws用在函數(shù)上斩个。
throw方法體中使用,表示拋出一個具體的異常對象驯杜,誰調(diào)用誰捕獲處理,throw用在函數(shù)內(nèi)做个。
catch中存在return鸽心,此時finally中是否被執(zhí)行?執(zhí)行,但是finlly外面程序不會繼續(xù)執(zhí)行
確定一個系統(tǒng)的學(xué)習(xí)Java的計劃居暖,如果想自學(xué)顽频,那么你就找一套非常系統(tǒng)的學(xué)習(xí)視頻。如果你自己找不到系統(tǒng)的學(xué)習(xí)視頻太闺∨淳埃可以加下小編的Java學(xué)習(xí)群:557865078,編號(煙火)不管你是小白還是大牛,小編我都?xì)g迎省骂,不定期分享干貨蟀淮,包括小編自己整理的一份2018最新的Java學(xué)習(xí)資料和0基礎(chǔ)入門教程,歡迎初學(xué)和進階中的小伙伴钞澳。