java 關(guān)鍵字

final

修飾符(關(guān)鍵字)如果一個類被聲明為final惯吕,意味著它不能再派生出新的子類原探,不能作為父類被繼承誊役。因此一個類不能既被聲明為 abstract的倍试,又被聲明為final的。將變量或方法聲明為final绑蔫,可以保證它們在使用中不被改變运沦。被聲明為final的變量必須在聲明時給定初值,而在以后的引用中只能讀取配深,不可修改茶袒。被聲明為final的方法也同樣只能使用,不能重載

finally

異常處理時提供 finally 塊來執(zhí)行任何清除操作凉馆。如果拋出一個異常,那么相匹配的 catch 子句就會執(zhí)行,然后控制就會進入
finally 塊(如果有的話)澜共。一般異常處理塊需要向叉。

finalize

  • 方法名。Java 技術(shù)允許使用 finalize() 方法在垃圾收集器將對象從內(nèi)存中清除出去之前做必要的清理工作嗦董。這個方法是由垃圾收集器在確定這個對象沒有被引用時對這個對象調(diào)用的母谎。

  • finalize() 方法是在垃圾收集器刪除對象之前對這個對象調(diào)用的。 Java中所有類都從Object類中繼承finalize()方法京革。

  • 當垃圾回收器(garbage colector)決定回收某對象時奇唤,就會運行該對象的finalize()方法。Java中是沒有析構(gòu)函數(shù)的匹摇。C++的析構(gòu)函數(shù)是在對象消亡時運行的咬扇。但是在Java中很不幸,如果內(nèi)存總是充足的廊勃,那么垃圾回收可能永遠不會進行懈贺,也就是說filalize()可能永遠不被執(zhí)行,顯然指望它做收尾工作是靠不住的坡垫。

  • 那么finalize()究竟是做什么的呢梭灿?它最主要的用途是回收特殊渠道申請的內(nèi)存。Java程序有垃圾回收器冰悠,所以一般情況下內(nèi)存問題不用程序員操心堡妒。但有一種JNI(Java Native Interface)調(diào)用non-Java程序(C或C++),finalize()的工作就是回收這部分的內(nèi)存溉卓。

構(gòu)造代碼塊

  • 構(gòu)造代碼塊的作用是給對象進行初始化皮迟。
  • 對象一建立就運行構(gòu)造代碼塊了,而且優(yōu)先于構(gòu)造函數(shù)執(zhí)行的诵。這里要強調(diào)一下万栅,有對象建立,才會運行構(gòu)造代碼塊西疤,類不能調(diào)用構(gòu)造代碼塊的烦粒,而且構(gòu)造代碼塊與構(gòu)造函數(shù)的執(zhí)行順序是前者先于后者執(zhí)行。
  • 構(gòu)造代碼塊與構(gòu)造函數(shù)的區(qū)別是:構(gòu)造代碼塊是給所有對象進行統(tǒng)一初始化代赁,而構(gòu)造函數(shù)是給對應(yīng)的對象初始化扰她,因為構(gòu)造函數(shù)是可以多個的,運行哪個構(gòu)造函數(shù)就會建立什么樣的對象芭碍,但無論建立哪個對象徒役,都會先執(zhí)行相同的構(gòu)造代碼塊。也就是說窖壕,構(gòu)造代碼塊中定義的是不同對象共性的初始化內(nèi)容忧勿。

靜態(tài)代碼塊

  • 它是隨著類的加載而執(zhí)行杉女,只執(zhí)行一次,并優(yōu)先于主函數(shù)鸳吸。具體說熏挎,靜態(tài)代碼塊是由類調(diào)用的。類調(diào)用時晌砾,先執(zhí)行靜態(tài)代碼塊坎拐,然后才執(zhí)行主函數(shù)的
  • 靜態(tài)代碼塊其實就是給類初始化的,而構(gòu)造代碼塊是給對象初始化的
  • 靜態(tài)代碼塊中的變量是局部變量养匈,與普通函數(shù)中的局部變量性質(zhì)沒有區(qū)別
  • 一個類中可以有多個靜態(tài)代碼塊
public class StaticCode {
    
    static int cnt=6;
    static{
          cnt+=9;
    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        System.out.println(cnt);
    }
    
    static{
          cnt/=3;
    }

}


//運行結(jié)果:5
public class StaticCode {
    
    public StaticCode(){//構(gòu)造函數(shù)
        System.out.println("A的構(gòu)造函數(shù)");    
    }
    
    {//構(gòu)造代碼塊
        System.out.println("A的構(gòu)造代碼塊");    
    }
    
    static {//靜態(tài)代碼塊
        System.out.println("A的靜態(tài)代碼塊");        
    }
    public static void main(String[] args) {
        StaticCode a=new StaticCode();    
    }

}

//運行結(jié)果
A的靜態(tài)代碼塊
A的構(gòu)造代碼塊
A的構(gòu)造函數(shù)

序列化

一個類的對象要想序列化成功哼勇,必須滿足兩個條件:

  • 該類必須實現(xiàn) java.io.Serializable 對象。
  • 該類的所有屬性必須是可序列化的呕乎。如果有一個屬性不是可序列化的积担,則該屬性必須注明是短暫的。
implements Serializable
  • ObjectOutputStream和ObjectInputStream實現(xiàn)序列化和反序列化
  • 在類中增加writeObject 和 readObject 方法可以實現(xiàn)自定義序列化策略

native

  • 一個native方法就是一個Java調(diào)用非Java代碼的接口楣嘁。一個native方法是指該方法的實現(xiàn)由非Java語言實現(xiàn).
  • 在定義一個native方法時磅轻,并不提供實現(xiàn)體(比較像定義一個Java Interface),因為其實現(xiàn)體是由非Java語言在外面實現(xiàn)的逐虚。

JNI

  • Java本機接口(Java Native Interface)聋溜,是一個本機編程接口,它是Java軟件開發(fā)工具箱(Java Software Development Kit叭爱,SDK)的一部分撮躁。
  • JNI允許Java代碼使用以其他語言編寫的代碼和代碼庫。Invocation API(JNI的一部分)可以用來將Java虛擬機(JVM)嵌入到本機應(yīng)用程序中买雾,從而允許程序員從本機代碼內(nèi)部調(diào)用Java代碼把曼。

[圖片上傳失敗...(image-ca25d1-1557841284036)]


class HelloWorld {
    public native void hello();
    static {
        System.loadLibrary("hello");
    }
    public static void main(String[] args) {
        new HelloWorld().hello();
    }

https://blog.csdn.net/qq_23994787/article/details/79066336

自動拆箱和自動裝箱

自動裝箱就是Java自動將原始類型值轉(zhuǎn)換成對應(yīng)的對象,比如將int的變量轉(zhuǎn)換成Integer對象漓穿,這個過程叫做裝箱嗤军,反之將Integer對象轉(zhuǎn)換成int類型值,這個過程叫做拆箱晃危。

自動裝箱時編譯器調(diào)用valueOf將原始類型值轉(zhuǎn)換成對象叙赚,同時自動拆箱時,編譯器通過調(diào)用類似intValue(),doubleValue()這類的方法將對象轉(zhuǎn)換成原始類型值僚饭。

http://www.reibang.com/p/0ce2279c5691

static

  1. 修飾成員變量和成員方法: 被 static 修飾的成員屬于類震叮,不屬于單個這個類的某個對象,被類中所有對象共享鳍鸵,可以并且建議通過類名調(diào)用苇瓣。被static 聲明的成員變量屬于靜態(tài)成員變量,靜態(tài)變量 存放在 Java 內(nèi)存區(qū)域的方法區(qū)偿乖。調(diào)用格式:類名.靜態(tài)變量名 類名.靜態(tài)方法名()
  2. 靜態(tài)代碼塊: 靜態(tài)代碼塊定義在類中方法外, 靜態(tài)代碼塊在非靜態(tài)代碼塊之前執(zhí)行(靜態(tài)代碼塊—>非靜態(tài)代碼塊—>構(gòu)造方法)击罪。 該類不管創(chuàng)建多少對象哲嘲,靜態(tài)代碼塊只執(zhí)行一次.
  3. 靜態(tài)內(nèi)部類(static修飾類的話只能修飾內(nèi)部類): 靜態(tài)內(nèi)部類與非靜態(tài)內(nèi)部類之間存在一個最大的區(qū)別: 非靜態(tài)內(nèi)部類在編譯完成之后會隱含地保存著一個引用,該引用是指向創(chuàng)建它的外圍類外邓,但是靜態(tài)內(nèi)部類卻沒有撤蚊。沒有這個引用就意味著:1. 它的創(chuàng)建是不需要依賴外圍類的創(chuàng)建。2. 它不能使用任何外圍類的非static成員變量和方法损话。
  4. 靜態(tài)導(dǎo)包(用來導(dǎo)入類中的靜態(tài)資源,1.5之后的新特性): 格式為:import static 這兩個關(guān)鍵字連用可以指定導(dǎo)入某個類中的指定靜態(tài)資源槽唾,并且不需要使用類名調(diào)用類中靜態(tài)成員丧枪,可以直接使用類中靜態(tài)成員變量和成員方法。

靜態(tài)內(nèi)部類

靜態(tài)內(nèi)部類與非靜態(tài)內(nèi)部類之間存在一個最大的區(qū)別庞萍,我們知道非靜態(tài)內(nèi)部類在編譯完成之后會隱含地保存著一個引用拧烦,該引用是指向創(chuàng)建它的外圍類,但是靜態(tài)內(nèi)部類卻沒有钝计。沒有這個引用就意味著:

  • 它的創(chuàng)建是不需要依賴外圍類的創(chuàng)建恋博。
  • 它不能使用任何外圍類的非static成員變量和方法。

instanceof(對象是否是類的實例)

是Java的保留關(guān)鍵字私恬。它的作用是測試它左邊的對象是否是它右邊的類的實例债沮,返回boolean類型的數(shù)據(jù)”久可以用在繼承中的子類的實例是否為父類的實現(xiàn)疫衩。

public interface A {}

public class B implements A{

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        A a=null;
        B b=null;
        
        System.out.println(a instanceof A);     //false
        System.out.println(b instanceof B);     //false
        
        System.out.println(a instanceof B);     //false
        System.out.println(b instanceof A);     //false
        
        
        a=new B();
        System.out.println(a instanceof A);     //true
        System.out.println(a instanceof B);     //true
        
        b=new B();
        System.out.println(b instanceof A);     //true
        System.out.println(b instanceof B);     //true
    }

}

class.forname():動態(tài)加載類
class.newInstance():靜態(tài)方法來實例

Collections工具類方法

  • void reverse(List list)//反轉(zhuǎn)
  • void shuffle(List list)//隨機排序
  • void sort(List list)//按自然排序的升序排序
  • void sort(List list, Comparator c)//定制排序,由Comparator控制排序邏輯
  • void swap(List list, int i , int j)//交換兩個索引位置的元素
  • void rotate(List list, int distance)//旋轉(zhuǎn)荣德。當distance為正數(shù)時闷煤,將list后distance個元素整體移到前面。當distance為負數(shù)時涮瞻,將 list的前distance個元素整體移到后面鲤拿。

查找刪除

  • int binarySearch(List list, Object key)//對List進行二分查找,返回索引署咽,注意List必須是有序的
  • int max(Collection coll)//根據(jù)元素的自然順序近顷,返回最大的元素。 類比int min(Collection coll)
  • int max(Collection coll, Comparator c)//根據(jù)定制排序艇抠,返回最大元素幕庐,排序規(guī)則由Comparatator類控制。類比int min(Collection coll, Comparator c)
  • void fill(List list, Object obj)//用指定的元素代替指定list中的所有元素家淤。
  • int frequency(Collection c, Object o)//統(tǒng)計元素出現(xiàn)次數(shù)
  • int indexOfSubList(List list, List target)//統(tǒng)計target在list中第一次出現(xiàn)的索引异剥,找不到則返回-1,類比int lastIndexOfSubList(List source, list target).
  • boolean replaceAll(List list, Object oldVal, Object newVal), 用新元素替換舊元素

Array 工具類方法

  • 排序 : sort()
  • 查找 : binarySearch()
  • 比較: equals()
  • 填充 : fill()
  • 轉(zhuǎn)列表: asList()
  • 轉(zhuǎn)字符串 : toString()
  • 復(fù)制: copyOf()

泛型

ArrayList<Integer> arrayInteger = new ArrayList<Integer>();
ArrayList<String> arrayString = new ArrayList<String>();
System.out.println(arrayInteger.equals(arrayString)); //輸出true

泛型它不會影響java虛擬機生成的匯編代碼絮重,在編譯階段冤寿,虛擬機就會把泛型的類型擦除歹苦,還原成沒有泛型的代碼,頂多編譯速度稍微慢一些督怜,執(zhí)行速度是完全沒有什么區(qū)別的殴瘦。這就是為什么,Java的泛型被稱為“偽泛型”的原因

通配符泛型<?>

  • 如果只指定了<?>号杠,而沒有extends蚪腋,則默認是允許Object及其下的任何Java類了。也就是任意類姨蟋。
  • 通配符泛型不單可以向下限制屉凯,如<? extends Collection>,還可以向上限制眼溶,如<? super Double>悠砚,表示類型只能接受Double及其上層父類類型,如Number堂飞、Object類型的實例灌旧。
  • 泛型類定義可以有多個泛型參數(shù),中間用逗號隔開绰筛,還可以定義泛型接口枢泰,泛型方法。這些都與泛型類中泛型的使用規(guī)則類似别智。
Class<T>在實例化的時候宗苍,T要替換成具體類
Class<?>它是個通配泛型,?可以代表任何類型

<? extends T>受限統(tǒng)配薄榛,表示T的一個未知子類
<? super T>下限統(tǒng)配讳窟,表示T的一個未知父類

https://blog.csdn.net/ikownyou/article/details/65630385

Enumeration

  • hasMoreElemnet
  • nextElemet

Iterator

  • hasNext
  • next
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市敞恋,隨后出現(xiàn)的幾起案子丽啡,更是在濱河造成了極大的恐慌,老刑警劉巖硬猫,帶你破解...
    沈念sama閱讀 217,185評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件补箍,死亡現(xiàn)場離奇詭異,居然都是意外死亡啸蜜,警方通過查閱死者的電腦和手機坑雅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評論 3 393
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來衬横,“玉大人裹粤,你說我怎么就攤上這事》淞郑” “怎么了遥诉?”我有些...
    開封第一講書人閱讀 163,524評論 0 353
  • 文/不壞的土叔 我叫張陵拇泣,是天一觀的道長。 經(jīng)常有香客問我矮锈,道長霉翔,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,339評論 1 293
  • 正文 為了忘掉前任苞笨,我火速辦了婚禮债朵,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘猫缭。我一直安慰自己葱弟,他們只是感情好,可當我...
    茶點故事閱讀 67,387評論 6 391
  • 文/花漫 我一把揭開白布猜丹。 她就那樣靜靜地躺著,像睡著了一般硅卢。 火紅的嫁衣襯著肌膚如雪射窒。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,287評論 1 301
  • 那天将塑,我揣著相機與錄音脉顿,去河邊找鬼。 笑死点寥,一個胖子當著我的面吹牛艾疟,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播敢辩,決...
    沈念sama閱讀 40,130評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼蔽莱,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了戚长?” 一聲冷哼從身側(cè)響起盗冷,我...
    開封第一講書人閱讀 38,985評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎同廉,沒想到半個月后仪糖,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,420評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡迫肖,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,617評論 3 334
  • 正文 我和宋清朗相戀三年锅劝,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蟆湖。...
    茶點故事閱讀 39,779評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡故爵,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出帐姻,到底是詐尸還是另有隱情稠集,我是刑警寧澤奶段,帶...
    沈念sama閱讀 35,477評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站剥纷,受9級特大地震影響痹籍,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜晦鞋,卻給世界環(huán)境...
    茶點故事閱讀 41,088評論 3 328
  • 文/蒙蒙 一蹲缠、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧悠垛,春花似錦线定、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至湾趾,卻和暖如春芭商,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背搀缠。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評論 1 269
  • 我被黑心中介騙來泰國打工铛楣, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人艺普。 一個月前我還...
    沈念sama閱讀 47,876評論 2 370
  • 正文 我出身青樓簸州,卻偏偏與公主長得像,于是被迫代替她去往敵國和親歧譬。 傳聞我的和親對象是個殘疾皇子岸浑,可洞房花燭夜當晚...
    茶點故事閱讀 44,700評論 2 354

推薦閱讀更多精彩內(nèi)容