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