摘要:對(duì)象的自動(dòng)清除對(duì)象回收是由垃圾回收線程負(fù)責(zé)方法可以要求系統(tǒng)進(jìn)行垃圾回收,僅僅是建議系統(tǒng)沒有析構(gòu)方法,但的有類似方法系統(tǒng)在回收時(shí)會(huì)自動(dòng)調(diào)用對(duì)象的方法子類的方法可以在里面釋放系統(tǒng)資源,一般來說,子類的方法中應(yīng)該調(diào)用父類的方法。
對(duì)象的自動(dòng)清除
對(duì)象回收是由垃圾回收線程負(fù)責(zé)
System.gc()方法可以要求系統(tǒng)進(jìn)行垃圾回收,僅僅是建議系統(tǒng)
java沒有“析構(gòu)方法”,但Object的finalize()有類似方法
系統(tǒng)在回收時(shí)會(huì)自動(dòng)調(diào)用對(duì)象的finalize()方法
protected void finalize() throws Throwable{}
子類的finalize方法可以在里面釋放系統(tǒng)資源,一般來說,子類的finalize方法中應(yīng)該調(diào)用父類的finalize方法。
內(nèi)部類與匿名類 內(nèi)部類定義在一個(gè)類的內(nèi)部
使用分為內(nèi)部使用和外部使用
內(nèi)部類總可以直接訪問外部類的字段及放啊
內(nèi)部類總訪問外部類的字段可以用“外部類名.this.字段”的方式
用static修飾內(nèi)部類,表明該內(nèi)部類實(shí)際是一種外部類
因?yàn)樗c外部類的實(shí)例無關(guān)
有人認(rèn)為static的類是嵌套類,不是內(nèi)部類
匿名類它沒有類名,在定義類的同時(shí)就生成該對(duì)象的一個(gè)實(shí)例,不取名字,直接用父類或接口的名字
一次性使用的類
例子:
new Handler(){ ... }局部類
同局部變量一樣,方法中的內(nèi)部類
不能用public,private,protected,static修飾
但可以被final,abstract修飾
可以訪問器外部類的成員
不能夠訪問該方法的局部變量,除非是final局部變量。
Lambda表達(dá)式
基本寫法
(參數(shù)) -> 結(jié)果
例子:
(String s) -> s.lenth(); x -> x*x; () -> {System.out.println("aaa")}
大體上相當(dāng)于其它語言的”匿名函數(shù)”或”函數(shù)指針”
在java中它實(shí)際上是“匿名類的一個(gè)實(shí)例”
裝箱 基本類型的包裝類它將基本類型包裝成Object
integer i = new Integer(10);
Integer i=10;
實(shí)際為:Integer i=Integer.valueOf(10);
int a=i;
實(shí)際為:a=i.intValue();
可以在enum定義體中,添加字段,方法,構(gòu)造方法
又稱為注記,標(biāo)記,標(biāo)記,注釋
是在各種語法要素上加上附加信息,以供編譯器或其他程序使用
常用注解:
@Override 表示覆蓋父類的方法
@Deprecated 表示過時(shí)的方法
@SuppressWarnings 標(biāo)識(shí)讓編譯器不產(chǎn)生警告
引用實(shí)質(zhì)就是指針
但是它是受控的,安全的
比如:
會(huì)檢查空指引
沒有指針運(yùn)算
不能訪問沒有引用到的內(nèi)存
自動(dòng)回收垃圾
(1) 指針 》引用類型,引用本身就相當(dāng)于指針,可以用來修改對(duì)象的屬性,調(diào)用對(duì)象的方法
(2)指針運(yùn)算 》數(shù)組
(3)函數(shù)指針 》接口,lambda表達(dá)式
(4)指向結(jié)點(diǎn)的指針 》對(duì)象的引用
(5)使用JNI
java Native interface
它允許java代碼和其他語言寫的代碼進(jìn)行交互
基本類型的相等 基本類型:數(shù)值類型:轉(zhuǎn)換后比較
浮點(diǎn)數(shù),最好不直接用==
Double.NAN==Double.NAN結(jié)果為false
boolean型無法與int比較
注 valueOf() -128到127會(huì)有緩存,超過的話就沒有緩存了
枚舉類型內(nèi)部進(jìn)行了唯一實(shí)例化,可以直接判斷
引用對(duì)象“==”是直接看兩個(gè)引用是否一樣
如果要判斷內(nèi)容是否一樣,則要重寫equals方法
如果重寫equals方法,則最好重寫hashCode方法,因?yàn)橐话阋詢?nèi)容的hashCode作為唯一性標(biāo)志
[圖片上傳失敗...(image-845e09-1522336106762)]
String對(duì)象的特殊性判斷對(duì)象,一定不要用==,要用equals
但是字符串變量及字符串常量會(huì)進(jìn)行內(nèi)部化,相同的字符串常量是==的
異常異常又稱為例外,差錯(cuò)
對(duì)應(yīng)著java運(yùn)行錯(cuò)誤處理機(jī)制
基本寫法:
try{ 語句組 }catch(Exception ex){ 異常處理語句組; }java中處理異常
拋出異常
運(yùn)行時(shí)系統(tǒng)在調(diào)用棧中查找:從生成異常的方法開始進(jìn)行回溯,直到找到
捕獲異常的代碼
異常的分類
Throwable
Error:JVM錯(cuò)誤
Exception
多異常的處理子類異常要排在父類異常的前面
finally語句
無論有無異常,都會(huì)執(zhí)行處理語句
受檢的異常Exception分兩種
RuntimeException及其子類,可以不明確處理
否則,稱為受檢的異常,受檢的異常,要求明確進(jìn)行語法處理,要么捕獲,要么拋出異常
自定義異常創(chuàng)建用戶自定義異常類
繼承自Exception類或某個(gè)子Exception類
定義屬性和方法,或重載父類的方法
對(duì)于異常,不僅要進(jìn)行捕獲處理,有時(shí)候還需要將異常進(jìn)一步傳給調(diào)用者,一變讓調(diào)用者也能感受到這種異常,這是可以在catch語句塊或finally
語句塊中采取以下三種方式:
將當(dāng)前捕獲的異常再次拋出
重新生成一個(gè)異常,并拋出
重新生成一個(gè)新異常,該異常中包含了當(dāng)前異常的信息,如throw new Exception (“some message “,e)
斷言及程序的調(diào)試斷言
assert 表達(dá)式
assert 表達(dá)式,信息
在調(diào)試程序時(shí),如果表達(dá)式不為true,則程序會(huì)產(chǎn)生異常,并輸出相關(guān)的錯(cuò)誤信息
例
assert hypotenuse(3,4)==5:”算法不正確”;
它起到對(duì)程序的檢測(cè)作用
編譯及運(yùn)行只有在JDK1.4及以上的版本才可以使用斷言
在運(yùn)行時(shí),要使assert起作用,則在運(yùn)行時(shí),使用選項(xiàng)(-ea ,即-enableassetions)
如 java -ea - classpath.Assertion
程序的測(cè)試及Junit在編寫程序代碼的同時(shí),還編寫測(cè)試代碼來判斷這些程序是否正確,這個(gè)過程稱為“測(cè)試驅(qū)動(dòng)”的開發(fā)過程
在java的測(cè)試過程,經(jīng)常使用Junit框架
測(cè)試函數(shù)@Test來標(biāo)注測(cè)試函數(shù)
fail(info) :表示信息出錯(cuò)
assertEqauls(arg1,arg2):表示程序要保證兩個(gè)參數(shù)相等
assertNull(arg):表示參數(shù)要為null
語法錯(cuò)誤(Syntax error):編輯,編譯器發(fā)現(xiàn)
運(yùn)行錯(cuò)誤(Runtime error):異常處理機(jī)制
邏輯錯(cuò)誤(Logic error):調(diào)式(debug),單元測(cè)試(unit test)
程序的調(diào)試在IDE中,項(xiàng)目中點(diǎn)右鍵,debug as
進(jìn)入到調(diào)試視圖(debug perspective)
調(diào)試的手段斷點(diǎn)(breakpoint)
跟蹤(trace)
監(jiān)視(watch)
在很有可能有錯(cuò)誤的地方設(shè)置斷點(diǎn),然后跟蹤java基礎(chǔ)類庫
java.lang core
java.util
java.io
java.awt
java.net
java.sql
Object類Object類是所有類的直接或間接父類
讓所有的類有了一致性
equals()
==是引用相等,equals是內(nèi)容相等
如果覆蓋equals方法,一般也要覆蓋hashcode方法
getClass()方法是final方法,它返回一個(gè)對(duì)象在運(yùn)行時(shí)所對(duì)應(yīng)的標(biāo)識(shí)
toString返回對(duì)象的字符串表示
finalize用于在垃圾收集前清除對(duì)象
notify(),notifyAll(),wait()線程相關(guān)
System類System.getProperty(String name)獲取特定的系統(tǒng)屬性值
線程進(jìn)程:一個(gè)程序的運(yùn)行
線程:程序中單個(gè)順序的流控制稱為線程
一個(gè)進(jìn)程中可以含有多個(gè)線程
一個(gè)進(jìn)程中的多個(gè)線程
分享CPU(并發(fā)的或以時(shí)間片的方式)
共享內(nèi)存
線程體 — run()方法來實(shí)現(xiàn)的
線程啟動(dòng)后,系統(tǒng)就自動(dòng)調(diào)用run()方法
使用通過繼承Thread類
通過向Thread()構(gòu)造方法傳遞Runnable對(duì)象
可用匿名類實(shí)現(xiàn)Runnable或用lambda表達(dá)式
線程池封裝
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/68931.html
摘要:只因技術(shù)種類繁雜眾多層出不窮,程序員只有靠不斷的學(xué)習(xí)才能不落后于技術(shù),被工作淘汰。特此推薦給大家。 99%的程序員每天都是先學(xué)習(xí),后工作,不然完成不了工作。只因技術(shù)種類繁雜眾多、層出不窮,程序員只有靠不斷的學(xué)習(xí)才能不落后于技術(shù),被工作淘汰。我就是這其中一員,深得體會(huì)其中的「疼并快樂」,在...
摘要:小結(jié)程序計(jì)數(shù)器和虛擬機(jī)棧是線程私有的,而堆和方法區(qū)是線程共享的除了虛擬機(jī)運(yùn)行時(shí)內(nèi)存,在中使用類可以直接操作本機(jī)內(nèi)存。 Java的內(nèi)存區(qū)域 Java虛擬機(jī)在執(zhí)行Java程序中會(huì)把它所管理的內(nèi)存劃分為若干個(gè)數(shù)據(jù)區(qū)域,這些區(qū)域有各自的用途,以及生命周期,有些依賴虛擬機(jī)進(jìn)程啟動(dòng)而存在,有些依賴用戶線程的啟動(dòng)和結(jié)束而建立和銷毀 運(yùn)行時(shí)內(nèi)存 showImg(/img/bVqUpc); 程序計(jì)數(shù)器(...
摘要:結(jié)構(gòu)體也可以包含結(jié)構(gòu)體,就像內(nèi)部類訪問結(jié)構(gòu)的屬性和一樣。。我覺得這個(gè)需要學(xué)下數(shù)據(jù)結(jié)構(gòu)才能更好理解給數(shù)據(jù)類型起一個(gè)新名字則可以通過對(duì)于結(jié)構(gòu)體我可以這樣再通過變量名就可以簡(jiǎn)便的聲明結(jié)構(gòu)體變量。文件暫時(shí)過了一遍預(yù)處理器頭文件就是擴(kuò)展名為的文件。 ...
摘要:網(wǎng)絡(luò)編程是指編寫運(yùn)行在多個(gè)設(shè)備計(jì)算機(jī)的程序,這些設(shè)備都通過網(wǎng)絡(luò)連接起來。通常用于互聯(lián)網(wǎng)協(xié)議,被稱。編程套接字使用提供了兩臺(tái)計(jì)算機(jī)之間的通信機(jī)制??蛻舳顺绦騽?chuàng)建一個(gè)套接字,并嘗試連接服務(wù)器的套接字。 網(wǎng)絡(luò)編程是指編寫運(yùn)行在多個(gè)設(shè)備(計(jì)算機(jī))的程序,這些設(shè)備都通過網(wǎng)絡(luò)連接起來。 網(wǎng)絡(luò)編程是指編寫運(yùn)行在多個(gè)設(shè)備(計(jì)算機(jī))的程序,這些設(shè)備都通過網(wǎng)絡(luò)連接起來。 java.net 包中 J2SE ...
摘要:最近系統(tǒng)整理了一套初學(xué)者最佳的學(xué)習(xí)方法以及會(huì)遇到的坑等,希望對(duì)你有所幫助。正常的智商其實(shí),學(xué)習(xí)并不需要所謂的數(shù)學(xué)邏輯好,需要英語水平棒。大周期每天學(xué)習(xí)時(shí)間五個(gè)小時(shí)以上的,建議學(xué)習(xí)周期。三學(xué)習(xí)時(shí)會(huì)遇到的坑不知道學(xué)習(xí)的重點(diǎn),下面學(xué)習(xí)路線會(huì)畫。 最近系統(tǒng)整理了一套java初學(xué)者最佳的學(xué)習(xí)方法以及會(huì)遇到的坑等,希望對(duì)你有所幫助。 目錄: 一、學(xué)習(xí)java的前提 二、學(xué)習(xí)java的方法 三、學(xué)習(xí)...
摘要:?jiǎn)?dòng)命令假定項(xiàng)目名字是文件服務(wù)器,用來上傳和下載包目錄包文件名稱日志文件名稱腳本名稱下運(yùn)行包的方式如下當(dāng)前窗口被鎖定,可按打斷程序運(yùn)行,或直接關(guān)閉窗口,程序退出當(dāng)前窗口不被鎖定,但是當(dāng)窗口關(guān)閉時(shí),程序中止運(yùn)行。 服務(wù)器如果關(guān)機(jī),應(yīng)用比較多的話,需要重啟把所有程序啟動(dòng)一遍。在網(wǎng)上找了一些腳本,綜合改了一個(gè)新的出來。以后啟動(dòng)就可以少寫一些命令了。 啟動(dòng)命令 假定項(xiàng)目名字是fileserve...
閱讀 2340·2021-11-22 14:56
閱讀 1478·2021-09-24 09:47
閱讀 913·2019-08-26 18:37
閱讀 2832·2019-08-26 12:10
閱讀 1528·2019-08-26 11:55
閱讀 3150·2019-08-23 18:07
閱讀 2306·2019-08-23 14:08
閱讀 612·2019-08-23 12:12