原创 Java進階(11) - Java8+新特性

接口中的默認方法,接口終於可以有方法實現了,使用註解即可標識出默認方法。 lambda表達式實現了函數式編程,通過註解可以聲明一個函數式接口,該接口中只能有一個方法,這個方法正是使用lambda表達式時會調用到的接口。 Option類實現了

原创 Java進階(2) - 特殊對象(Class類)

存在的意義位於java.lang包下,和java.lang.reflect包下的類共同支持java反射功能jvm在類加載時,在堆中爲每個類生成一個Class對象,用於記錄每個類的屬性、方法等信息,同時每個對象生成時都有特殊的標記位來指向堆中

原创 Java進階(8) - 併發(多線程鎖類)

一共有3類鎖 ,方法鎖、對象鎖、類鎖。(方法鎖也是對象鎖的一種)一、對象鎖對象鎖public class object {private Lock lock = new ReentrantLock();//JavaSE1.5.新增了一個ja

原创 Java進階(1) - Object類

Object類9大方法是哪些1、Clone方法實現對象的淺複製,只有實現了Cloneable接口纔可以調用該方法,否則拋出CloneNotSupportedException異常Java裏參數傳遞,除了8種基本類型是值傳遞。其他類對象都是引

原创 Java進階(9) - 併發(JUC)

待補充~

原创 Java進階(10) - 網絡編程

BIO、NIO、AIONIO vs IO之間的理念上面的區別(NIO將阻塞交給了後臺線程執行) IO是面向流的,NIO是面向緩衝區的 Java IO面向流意味着每次從流中讀一個或多個字節,直至讀取所有字節,它們沒有被緩存在任何地方; N

原创 Java進階(6) - 併發(關鍵字)

併發的特性1、可見性a、 保證任何一個線程修改變量立即寫入到主內存中(堆);b、 所有線程對該變量引用會強制立即失效,並且該線程必須去堆中獲取最新的變量值。 2、指令重排序代碼的執行順序 會在JVM中(編譯器優化 指令級並行重排序 內存系統

原创 Java進階(7) - 併發(多線程基本概念)

一、中斷interrupt方法只改變目標線程的中斷狀態(interrupt status),當線程處於 wait、sleep、join等狀態時都在方法內部不斷地檢查中斷狀態的值,當調用interrupt會拋出InterruptedExcep

原创 Java進階(5) - 併發(JMM)

一、主存儲器與工作存儲器JMM 分爲主存儲器(main memory)和工作存儲器(working memory)兩種。 主存儲器(main memory):類的實例所存在的區域(堆),main memory爲所有的線程所共享(棧)。 工作

原创 JAVA基礎 (1) - 面向對象特性

1.抽象現實生活中的事物被抽象成對象,把具有相同屬性和行爲的對象被抽象成類,再從具有相同屬性和行爲的類中抽象出父類。(找出共同部分抽出來) 2.封裝隱藏對象的屬性和實現細節,僅僅對外公開接口。  3.繼承子類和父類之間的繼承關係,子類可以獲

原创 Java基礎(8) - 接口、抽象類

存在的意義接口 - 接口對維護和解耦代碼有很很好的幫助 同時由於接口常用來約束對象的行爲,可實現”多繼承“。抽象類 - 抽象類對於代碼的維護和重用有很好的幫助。 參考:接口 - https://blog.csdn.net/googleoy

原创 Java基礎 (3) - String/StringBuilder/Buffer StringFor

區別1.可變與不可變String —> private final char value[]; final 不可變的StringBuilder/Buffer —> char value[] 可變的String設計成不可變原因 -> 多

原创 Java基礎(10) - 內部類

存在意義1、內部類可以很好的實現隱藏一般的非內部類,是不允許有private與protected權限的,但內部類可以 2、內部類擁有外部類所有元素的訪問權限 ,private修飾也能訪問。 3、可實現多重繼承 ,讓多個內部類分別繼承多個其他

原创 Java基礎 (5) - 集合

Java集合大致分爲 List、Set、Queue和Map 四種體系, List代表有序、重複的集合;(ArrayList、LinkedList、Vector)Set代表無序、不可重複的集合; (HashSet、LInkedHashSet、

原创 Java基礎 (6) - 枚舉

能解決1.類或方法強制使用者傳入預設的值 2.性能相對常量更好 - (Android環境除外) 使用辦法public enum ColorEnum{WHITE("0x000001"),BLACK("0x000002"),GREEN("0