人生第一篇博客 -- JAVA SE 總結

   以前的博客都是在網上摘摘抄抄的,沒有本身來寫一篇博客,並且最近因爲畢業設計和要找工做忙得焦頭爛額的,沒時間整理和學習。因此計劃完成畢業設計後,從新來整理一下 電腦的文件和網盤的文件,並把以前學過(已經忘記)的知識在從新複習一遍。明天打算去參加華工的招聘會,因爲以前的JAVA SE基礎基本都忘了,因此從新來過一遍。java

  (1)基本數據類型正則表達式

  byte , short , char , int , long , float , double , boolean編程

  (2) this ,super 和 static緩存

    this.成員變量  this.成員方法  this.構造函數app

    super.成員變量  super.成員方法  super.構造函數dom

    類名.靜態變量  類名.靜態方法ide

  (3)  成員變量放置在堆內存中函數

    局部變量保存在其所在方法的棧內存中,隨着方法的運行結束而結束工具

  (4)  switch學習

    jdk7以前 switch 只能支持 byte、short、char、int 這幾個基本數據類型和其對應的封裝類型

    jdk1.7後,整形,枚舉類,字符串均可以 ,  jdk1.7並無新的指令來處理switch string,而是經過調用switch中string.hashCode,將string轉換爲int從而進行判斷

  (5) equals與==的區別

     ==是指對內存地址進行比較, equals()是對內容進行比較

  (6) Object的方法

    clone()  toString()  equals()  hashcode()  getClass()  wait()  notify()  notifyAll()

  (7) Java的四種引用

    ①強引用:最廣泛的一種引用方式,如String s = "abc",變量s就是字符串「abc」的強引用,只要強引用存在,則垃圾回收器就不會回收這個對象。

    ②軟引用:用於描述還有用但非必須的對象,若是內存足夠,不回收,若是內存不足,則回收。通常用於實現內存敏感的高速緩存,軟引用能夠和引用隊列ReferenceQueue聯合使用,若是軟引用的對象被垃圾回收,JVM就會把這個軟引用加入到與之關聯的引用隊列中。

    ③弱引用:弱引用和軟引用大體相同,弱引用與軟引用的區別在於:只具備弱引用的對象擁有更短暫的生命週期。在垃圾回收器線程掃描它所管轄的內存區域的過程當中,一旦發現了只具備弱引用的對象,無論當前內存空間足夠與否,都會回收它的內存。

    ④虛引用:虛引用必須和引用隊列 (ReferenceQueue)聯合使用。當垃圾回收器準備回收一個對象時,若是發現它還有虛引,就會在回收對象的內存以前,把這個虛引用加入到與之關聯的引用隊列中。系統沒法經過虛引用來獲取被引用的對象

  (8) 重寫equals() : 知足 自反性  對稱性  傳遞性  一致性

  (9)final

    ①final 方法 不能被重寫,可是能夠被重載

    ②final 變量:基本數據類型 -> 數據值不可變  引用類型 -> 地址值不能變

    ③不可變類:  private final 修飾成員變量

           提供帶參數的構造方法

           只提供getter方法,不提供setter方法

           保證引用的引用類型是不可變的

  (10)final 和 abstract 互斥

    final 和static 不能同時修飾方法,可是能夠同時修飾內部類

  (11) 抽象類和接口的區別:  

一、抽象類和接口都不能直接實例化,若是要實例化,抽象類變量必須指向實現全部抽象方法的子類對象,接口變量必須指向實現全部接口方法的類對象。

 

二、抽象類要被子類繼承,接口要被類實現。

 

三、接口能有抽象方法,默認方法和靜態方法(JDK8支持),抽象類能有抽象方法和其餘非抽象類的方法

 

四、接口裏定義的變量只能是公共的靜態的常量,抽象類中的變量是普通變量。

 

五、抽象類裏的抽象方法必須所有被子類所實現,若是子類不能所有實現父類抽象方法,那麼該子類只能是抽象類。一樣,一個實現接口的時候,如不能所有實現接口方法,那麼該類也只能爲抽象類。

 

六、抽象方法只能申明,不能實現,接口是設計的結果 ,抽象類是重構的結果

 

七、抽象類裏能夠沒有抽象方法

 

八、若是一個類裏有抽象方法,那麼這個類只能是抽象類

 

九、抽象方法要被實現,因此不能是靜態的,也不能是私有的。

 

十、接口可繼承接口,並可多繼承接口,但類只能單繼承。

  (12) 內部類  內部類能訪問外部類的私有數據,可是外部類不能直接訪問內部類的實現細節

    ①靜態內部類   能夠包含靜態成員和非靜態成員,只能訪問外部類的靜態變量,接口只能包含靜態內部類

    ②非靜態內部類  不能擁有靜態成員,子類能夠是外部類

    ③局部內部類

    ④匿名內部類

  (13) 枚舉類

    ①繼承於java.lang.Enum

    ②實例必須在第一行顯示列出

    ③構造方法爲private

    ④能夠包含抽象方法,可是方法前面不加abstract,並且必須提供實現

    ⑤values() 獲取全部的枚舉值  

     ordinal() 返回枚舉值在枚舉類的索引值

     compareTo(E e) 比較枚舉值的先後順序

     valueOf(Class class, String name) 返回制定枚舉類中指定名稱的枚舉值

   (14) 對象在內存中的狀態

一、可達狀態
當一個對象被建立後,有一個以上的引用變量引用它。在有向圖中能夠從起始頂點導航到該對象,那麼它就出於可達狀態,程序能夠經過引用變量來調用該對象的屬性和方法。
二、可恢復狀態
若是程序中某個對象再也不有任何引用變量引用它,他將進入可恢復狀態,此時從有向圖的起始頂點不能導航到該對象。在這種狀態下,系統的垃圾回收機制轉變回收該對象所佔用的內存。在回收該對象以前,系統會調用可恢復狀態的對象的finalize方法進行資源清理,若是系統調用finalize方法從新讓一個以上的引用變量引用該對象,則該對象會再次編程可達狀態;不然,該對象將進入不可達狀態。
三、不可達狀態
當對象的全部關聯都被切斷,且系統調用全部對象的finalize方法依然沒有使該對象變成可達狀態後,這個對象將永久性地失去引用,最後變成不可達狀態。只有當一個對象出於不可達狀態,系統纔會真正回收該對象所佔用的資源。

  (15) 強制系統回收垃圾的兩種方式

    ①System.gc();

    ②Runtime.getRuntime().gc();

  (16) 經常使用的工具類

    ①Scanner

    ②System.currentTimeMill();

    ③Runtime.exec();

    ④Objects

    ⑤String

      charAt(int index);  獲取索引對應的值

      indexOf(int ch);  indexOf(String str);  獲取值對應的索引

      lastIndexOf(...);

      compareTo(String string); 返回字符差或者長度差

      concat(String string);

      contentEquals(StringBuffer sb); 比較String和StringBuffer,包含的字符序列相同返回true

      copyValueOf(char[] data);  等價於new String(char[] data)

      substring();

      getBytes();

      toCharArray();

      valueOf(X x);  String str = Integer.valueOf(12);  

    ⑥StringBuffer  

    ⑦StringBuilder

       append(s);

       insert(i,s);

       delete(a,b);

       reserve(s);

    ⑧Math

      pow(a,b);

      floor(a);

      ceil(a);

      round(a);

      sqrt(a);

    ⑨Random  ThreadLocalRandon   僞隨機

      Random rand = new Random(send);

      rand.nextInt(a,b);

      ThreadLocalRandom rand = ThreadLocalRandom.current();

    ⑩BigDecimal

      new BigDecimal();

      BigDecimal.valueOf();

      對於浮點數

         new BigDecimal("1.22");

         BigDecimal.valueOf(1.22);

      方法

         add();

         substract();

         multiply();

         divide();

         pow();

         XxxValue();

    ⑩①正則表達式

        Pattern p = new Pattern("\\w*");

        Matcher m = p.matcher("abc123456");

      ⑩② NumberFormat

      SimpleDataFormat

相關文章
相關標籤/搜索