javaSE階段重要知識點梳理

JavaSE

1、 基礎語法

一、        基本數據類型

  一、html

數據類型java

字節數正則表達式

二進制位數算法

byte編程

1設計模式

8數組

short安全

2網絡

16多線程

int

4

32

long

8

64

float

4

32

double

8

64

char

2

16

boolean

1

1

  boolean類型的值只有true和false兩種邏輯值,在編譯後會使用1和0來表示,這兩個數在內存中按位算,僅需1位(bit)便可存儲,位是計算機最小的存儲單位。

  數據類型char在中文編碼GBK-2312中佔2個字節,在UTF-8中佔3個字節。

二、判斷與循環

邏輯運算符

做用

&

與做用,左右兩邊兩個判斷結果都爲true就是true,不然是false

|

或做用,左右兩邊兩個判斷結果只要有一邊爲true,結果就是true,不然就是false

^

異或,你爲true我就是false

&&

左右兩邊,左邊若是爲false,右邊不執行,直接返回結果false

||

同理:左邊若是爲true,右邊不執行直接返回true

  第一種:

  if(條件表達式){

    語句塊1

  }else{

    語句塊2

  }

  第二種:

  if(條件表達式){

    語句塊1

  }else if{

    語句塊2

  } else {

  以上條件均不知足而執行的默認的邏輯

  }

  第三種:

  switch(被判斷的變量)

  {

  case 條件1:

    執行條件1的邏輯

    break;

  case 條件2:

    執行條件2的邏輯

    break;

  case n:

    執行條件n的邏輯

    break;

  default:

    以上條件均不知足而執行的默認的邏輯

  }

  第四種:

           While(判斷語句){

        循環體

   }

 

  Do{

      循環體

  }while(判斷語句);

  While是先判斷後執行,do while 是先執行循環體語句,而後進行判斷語句,就是說不管判斷是否爲true都會至少執行一次循環體語句。

三、數組

  一、 數組是對應的容器集合,須要存儲同類的數據,在一個容器中。

  二、 數組使用中,須要規定數組的長度,長度從1開始,設置後長度不可變。

  三、 數組使用中,定義數據的類型爲:Object,能夠存儲全部類型:,不然根據須要定義類型,能夠是對象也能夠是基本數據類型

  四、 數組要想遍歷(一個個的拿到數據內的數據),咱們須要for循環來完成,知道循環的次數,一個個的獲取。數組獲取中,若是超過角標,那麼就會報錯:角標越

    界異常:indexoutofboundsException,由於角標從0開始

  五、 排序算法:(選擇和冒泡)

  一、冒泡排序算法

 

 

 

       二、選擇排序算法

     

 

 

2、 面向對象

一、        封裝

    一、封裝屬性:對屬性的訪問權限進行了封裝,私有的只能本身用,公共的誰均可以用。

              二、封裝方法:普通方法也可使用關鍵字進行封裝,效果同樣,私有的方法別人不能用。

              三、對私有的屬性,能夠封裝一套獲取方法和設置方法,分別是set和get

                     Set別人設置我當前的私有屬性的數據。

                     Get別人獲取使用我當前的私有屬性的數據。

 

              四、在建立對象的時候進行封裝:構造方法

                     建立對象的過程當中,我須要建立出來的對象是空對象,那麼就用空參構造方法。

                     建立對象的過程當中,我須要建立出來的對象是帶有數據的對象,不是一個空對象,那麼咱們就使用有參構造方法來建立。

                     若是對象中不寫構造方法,默認就有空參,若是寫了那麼就使用寫了的,若是隻寫有參不寫空參,那麼就沒法使用空參建立對象。默認的空參在你寫了有參的時候就會消失,須要手動再寫空參才能正常使用。

              五、構造方法和普通方法同樣,能夠方法名相同,可是參數數據類型與數量不能相同,必須在同一個對象中,咱們稱之爲是方法的重載。

                     重載:方法名必須相同,參數類型不一樣。

                     重載:能夠修改方法的訪問修飾符,能夠修改返回類型,無返回仍是有返回。

    六、封裝四個關鍵字使用的範圍

位置

private

默認的

protected

public

同一個類

同一個包內的類

不一樣包內的子類

不一樣包而且不是子類

         注意:當前屬性若是須要徹底給別人使用,咱們就須要設置公共的:public

         注意:當前屬性若是隻能本身完成,別人不能使用,咱們就須要設置私有的:private

         注意:private 使用:方法:get方法與set方法,能夠被別人使用。

 

 

二、        繼承

  一、 繼承:子類繼承父類,子類可使用父類的全部的非私有的屬性和方法

 

       二、方法的重寫,須要注意事項:

                     一、方法名必須相同。

                     二、必須是繼承或者實現關係。

                     三、重寫方法傳遞的形參必須與父類的方法保持一致,不能設置其餘形參。

      四、重寫的方法,訪問權限封裝關鍵字:子類的訪問權限能夠修改,可是權限的大小必定要比父類大。不能比父類小。

 

              三、方法的重載和重寫的區別

      一、方法的重寫:必須有子父類的關係,子類重寫父類的方法,提高方法的功能,重寫方法中,修飾符子類須要比父類更大不能更小,也能夠相同。方法名必須相

      同,參數和返回值也必須相同。

 

      二、方法的重載:在當前自身對象中,提供多種相同的方法,可是有區別的是,修飾符能夠不同、返回值能夠不同、可是方法名必須相同、小括號內參數,參

      數類型不一樣或者參數數量不一樣來區分。

 

                     一個是發生在本身當前對象的:方法重載:overload

                     一個是發生在子父類對象的:方法重寫:override

 

三、        多態

   一、多態建立出來的對象,能夠執行調用父類的非私有的屬性和方法。

 

   二、使用多態,若是要想調用子類的方法,那麼子類的方法,必須是父類重寫的方法。不然沒法調用。

    當前使用多態建立出來的對象,若是當前的方法,是子類重寫父類的方法,那麼就優先調用執行。若是當前的方法,子類沒有重寫父類的方法,

    那麼調用的就是父類的方法。

 

        三、多態調用執行:

                一、多態優先調用子類重寫父類的方法。

                二、多態能夠調用父類的非私有方法。

                三、多態能夠調用父類的非私有屬性。

                四、多態不能調用子類的非私有屬性。

                五、多態不能調用子類的非私有方法。

 

        四、解決多態不能調用子類的非私有屬性和方法。

若是使用多態想要調用子類的特有屬性和方法的話。咱們須要將多態建立出來的對象,進行強制類型轉換。將父類轉換成子類。

 

        五、多態使用的細節總結:

              一、使用多態必須是有繼承或者實現關係的。

    二、使用多態咱們若是須要調用子類的方法,必須是重寫方法,重寫方法的權限最大。

    三、使用多態建立出來的對象,不能調用子類的特有屬性和方法,若是真想調用,咱們就須要使用到強轉。

    注意:在強轉的過程當中,你們頗有可能會出現一個異常:ClassCaseException:類型轉換異常。

    四、注意:爲了不後期你們出現類型轉換的錯誤,咱們事先能夠先測試判斷一下類型轉換是否正確:instanceof

    五、當前咱們可使用到,關鍵字進行判斷,判斷出來的結果,就是正確或者錯誤,咱們判斷當前轉換的類型,是否合格,若是合格咱們就轉換,若是不合格咱們

    就不轉換,就能解決類型異常的問題。

 

四、        抽象類

    一、抽象類:光定義方法但不實現方法。

 

    二、抽象方法,只能出如今抽象類或者是接口中,不能出如今普通方法中。抽象方法:當前只定義,不實現。例:父親的願望須要兒子去實現(俗稱:負債子還)。

   

        三、建立一個抽象類:關鍵字:abstract。

抽象類,其實和普通類相似,能夠有屬性、構造方法、普通方法、get方法set方法等等。可是,抽象類中還能夠定義抽象方法。

 

        四、在抽象類中,定義抽象方法

 

 

 

 

  五、子類若是實現的是抽象類,那麼必須實現抽象方法(必定要對抽象方法進行重寫)

        若是子類不重寫父類的抽象方法,就會一直報錯。

 

        六、建立對象的過程當中,抽象類是不容許被建立出來的

            抽象的對象,是不容許直接被new建立的。

            抽象類,若是要想建立,咱們就須要使用對應的實現類(兒子建立)

 

 

  七、 抽象類的出現:抽象類當中存在抽象方法,若是要想實現,那麼就須要子類完成。可是抽象類,又不能直接初始化,仍是得用多態來初始化。

 

        多態的產生,其實有兩部分的緣由:

    一、 多態讓建立對象,變的更加的靈活,根據用戶的選擇能夠動態的進行建立。

 

    二、 抽象類與接口是不能直接被建立的,而是須要經過多態的建立方式,讓子類具體實現,完成建立工做。

 

        八、抽象類總結:

            一、抽象類不能被final修飾,由於抽象類必需要有兒子。

       二、抽象類不能在方法中使用 final修飾,由於抽象類的抽象方法必需要被重寫。

            三、抽象類能夠繼承抽象類,全部的抽象方法須要在實現類中一塊兒實現。

            四、抽象類中能夠有抽象方法,也能夠有普通方法、屬性、構造方法。

五、        接口

  一、定義接口關鍵字:interface

 

       二、接口中方法都是抽象方法,不能有方法體。不能有普通方法,不能有構造方法。當前的接口中,只能有抽象方法,不能有實體方法。

 

       三、定義接口中的屬性:接口中不能有變量,只能存在常量。當前的屬性也可使用靜態來修飾。

       使用靜態修飾的好處:接口對象名稱調用屬性能夠直接調用。

 

    四、接口可否被final修飾?

  一、接口是不能被final修飾的。

  二、接口中的方法不能被final修飾。

  三、接口中的屬性能夠被final修飾,由於默認就是使用的final。

 

 五、使用接口:接口是不能直接被new出來的。因此當前必須先有實現類。

 

 六、Java的關係映射:單繼承、多實現。

  單繼承:對象與對象間,繼承只能繼承1次。

  多實現:對象與接口,一個對象能夠實現多個接口。

 

 七、接口和抽象類的區別:

 

    一、抽象類能夠有普通方法和抽象方法。

         二、抽象類中定義的屬性是變量。

         三、抽象類能夠繼承抽象類或者普通類。

         四、抽象類能夠實現接口,可是沒有必要。

         五、抽象類不能直接建立,須要用多態的方法建立。

 

  一、接口中只能有抽象的方法。

  二、接口中屬性是常量定義。

  三、接口能夠繼承接口,但不能實現。

  四、接口繼承是多繼承,抽象類繼承是單繼承。

  五、無論是接口仍是抽象類,對象不能使用final修飾。方法不能使用final修飾。

 

    由於後期在Java中開發項目,項目後期確定要維護升級的,咱們若是使用抽象類,就只能單繼承,不方便維護,讓項目加大了局限性。而使用接口的話,實現的接口數

  量不限,能夠多實現,解決了項目後期更新的侷限性問題。

 

  理解:

         抽象類就至關因而領導,領導定義任務,員工完成。

         接口就至關因而規範,接口制定規範,全部員工須要遵照。

六、        關鍵字

  一、 this關鍵字

  this對象:this關鍵字就是當前對象的引用關鍵字,用來區分傳遞形參與當前對象內的參數區別開來。

 

  二、 super關鍵字

  一、構造方法中使用super:

  Super必須放在前面。

  Super須要帶有小括號。帶有小括號就會調用父類對應的構造方法。

       二、super在普通方法中使用

  Super若是在普通方法中使用,那麼直接使用super便可,不須要添加小括號,不添加小括號的super,是直接引用的父類對象,不是構造方法。

 

  三、 static關鍵字

  一、static關鍵字修飾方法,咱們無需new對象,便可經過類名調用方法。

       二、static關鍵字修飾屬性,咱們無需new對象,便可經過類名調用屬性。

       三、緣由:static修飾的屬性和方法,在生成.class文件的時候就會被初始化出來。

       四、static能夠設置一個靜態代碼塊:

Static{    }:運行的方式,是程序執行的時候,第一次就調用的,運行權限比構造方法還要大。程序一運行,第一個就調用的是靜態代碼塊。

              使用場景:後期初始化數據的時候,咱們會使用到。

       五、static缺點:若是是static修飾的屬性和方法,聲明週期就會拉長,內存數據回收就會變得不方便,有些佔用內存,後期在項目中,若是數據龐大的狀況下,仍是儘可能少使用。

 

  四、 final關鍵字

    一、final能夠修飾class屬性對象,被final所修飾的對象,將不能被繼承。

              二、final能夠修飾屬性,被修飾的屬性,就從變量變成了常量,不可修改。

              三、final修飾的方法,當前的方法只能使用,不能被重寫。

 

七、        內部類

  一、內部類:在當前的對象內,再建立一個對象,稱之爲內部類

 

  二、咱們建立內部類對象規則:

  內部類,必須在類對象的括號內建立,命名不能帶有小括號。

 

  三、初始化內部類。

  注意:由於當前的對象是內部對象,因此先要將外部對象建立出來,再來建立內部對象,外部對象建立內部對象中,使用到了調用,因此建立內部對象的時候,前面須要帶

  上小點,進行調用。

 

  四、內部對象,是否會生成.class文件:

  會生成一個Animal$Cat.class文件,由於是否生成class文件,取決因而否使用了class關鍵字

 

  五、內部類同樣和外部類使用,只是內部類是寫在對象內的。同樣也能夠封裝、繼承、多態

 

  六、匿名對象:就是沒有名字的對象,通常使用在建立對象的時候。

  注意:當前調用的方法與建立的對象,只會執行一次,它是一次性寫法。由於沒有給對象在建立的時候命名,因此方法執行完,對象也會隨着消失銷燬在內存中。因此若是

  須要再次調用方法,那麼就須要從新再次建立對象。

 

  七、匿名內部類:在當前類中建立一個類,可是不給名稱。(由於抽象類與接口不能直接被new,要先直接初始化其實也有方法,咱們當前就須要使用匿名內部類)

 

  八、匿名內部類,也會生成一個class文件,雖然沒有明文寫出,生成的class文件仍是會出來,命名使用的是1命名。

 

3、 經常使用API

一、引用數據類型:

              一、基本數據類型:8種:

                     整數類型:byte、short、int、long

                     浮點類型:float、double

                     判斷類型:boolean

                     字符類型:char

 

              二、引用數據類型:9種:

                     整數類型:Byte、Short、Integer、Long

                     浮點類型:Float、Double

                     判斷類型:Boolean

                     字符類型:Character

                     字符串:String

 

    三、字符和字符串的區別:

                     一、字符是基本數據類型,字符串是引用數據類型。

           二、字符定義的字符能夠轉換爲對應的ascii表,對應的數字,能夠進行加減乘除。

      三、字符串由於是常量,數據是在常量池中,只能作對應的加法,是拼接。其他的減乘除都是不行的,由於String是不支持的

                四、String對象,建立的幾種不一樣方式。

                     直接建立:從常量池就能直接拿到對應的常量數據

                     經過new關鍵字建立:常量池常量傳遞給堆,堆再給棧。

 

      五、String建立的字符串都是常量,不能修改,修改的話就是從新在來生成一個,原有的就會等待回收機制回收。

 

      六、String構造方法中,咱們能夠給空的、也能夠給具體的String字符串、還能夠給對應的數組讓數組對應的字符或者數字來生成一個字符串。

      

      七、 自動裝箱與自動拆箱

      基本數據類型,轉換爲引用數據類型,自動裝箱。

      引用數據類型,轉換爲基本數據類型,自動拆箱。

 

二、StringBuffer和StringBuilder

     一、String:字符串常量

    StringBuffer:字符串變量

    StringBuilder:字符串變量

       二、線程安全

    StringBuilder:線程非安全的

    StringBuffer:線程安全的

       三、三者使用:

    1.若是要操做少許的數據用 = String

    2.單線程操做字符串緩衝區 下操做大量數據 = StringBuilder

    3.多線程操做字符串緩衝區 下操做大量數據 = StringBuffer

       四、

              一、StringBuffer對象,默認長度是:16

              二、StringBuilder對象,默認長度是:16

三、Date

  一、Date日期對象,咱們就是經過它將對應的毫秒值轉化爲咱們看的懂的日期對象。

 

  二、Date對象中,重寫了toString方法,裏面含有對應的返回日期格式。咱們看完後,查看到了對應的英文字母,這些就是定義日期格式的關鍵字符。

 

  三、當前咱們若是須要本身定義日期顯示的樣式,咱們就須要對應設置本身所須要的字母關鍵字符,可是Date裏面是沒有給咱們提供設置方法的,咱們須要使用到日期的幫助類:SimpleDateFormat

 

  四、SimpleDateFormat對象,對Date日期對象進行了一個顯示內容的封裝,讓當前的日期,能夠根據用戶自身的需求進行自定義格式。可是自定義格式中,咱們須要經過字母將格式設置完成後,才能使用。

 

  五、當前Date與SimpleDateFormat對象兩個相結合,最終就能獲得咱們想要的日期格式,日期格式顯示出來的內容,就是根據毫秒值來轉換的。

 

  六、日期爲何須要使用毫秒值,避免時間重複,時間計算是須要很是精準的。由於任何項目若是時間戳出了問題,就會產生不可逆的異常。

4、 集合

一、        三個集合的區別

 

 

 

List

ArrayList

底層是數組

查詢速度快,增刪改慢

線程不安全

效率高

LinkedList

底層是雙向鏈表

增刪速度快,查詢慢

線程不安全

效率高

Vector

底層是數組

查詢快,增刪慢

線程安全

效率低

ArrayList 初始容量爲10,自增加度是(10*3/2)+ 1。

Vector 內部數據數組的大小爲10,其標準容量增量爲零。

 

 

 

Set

HashSet

底層是HashMap

存取速度快,

線程不安全

無序,不可重複

能夠存儲null,但只能放入一個null

TreeSet

底層是紅黑樹

排序存儲

線程不安全

有序,不可重複

不能夠存儲null

HashSet其底層HashMap實例的默認初始容量是16,加載因子是0.75

 

 

 

Map

HashMap

底層是Hash表(數組+鏈表)

效率高

線程不安全

鍵值能夠存儲null,但只能存儲一次,否則會被覆蓋

HashTable

底層是Hash表(數組+鏈表)

效率低

線程安全

不能夠存儲null

HashMap   默認初始容量是16,加載因子是0.75

HashTable默認初始容量是11,加載因子是0.75

 

二、        集合的關係圖

 

 

 

 

  一、彙總:

              Collection:是集合中的一個接口父類,它是一個分支,子類實現接口中:List和Set

 

              Map:也是集合中的一個接口父類,子類中是:HashMap、HashTable

 

       二、Map接口集合,與Collection區別:

              Map結構分爲:k v,俗稱鍵值對。

              K:key:鍵

              V:value:值

              在map集合中,k就是鍵,是主鍵的意思,不能重複。V就是值,值能夠重複。

              在List集合中,角標就是鍵,裏面的內容就是值。角標從0開始,沒有重複的。

 

5、 IO流

一、咱們所學習的全部IO:

              FileWriter:文件的字符輸出流,是Writer的子類。

              FileReader:文件的字符輸入流,是Reader的子類。

 

              BufferedWriter:字符高效輸出流,當前默認有緩衝區。

              BufferedReader:字符高效輸入流,當前默認有緩衝區。

 

              FileOutputStream:文件字節輸出流,當前是萬能輸出流。

              FileInputStream:文件字節輸入流,當前是萬能輸入流。

 

              BufferedOutputStream:文件高效字節輸出流,當前默認有緩衝區。

              BufferedInputStream:文件高效字節輸入流,當前默認有緩衝區。

      

              ObjectOutputStream:對象輸出流

              ObjectInputStream:對象輸入流

              只能將支持 java.io.Serializable 接口的對象寫入和讀取到流中。

 

二、文件的嵌套複製,遞歸

  在文件夾複製的工做中,文件夾中還有存在子文件夾,嵌套存在深度不一致多,有的多有的少。咱們須要複製過程當中考慮全面,就須要將代碼嵌套比較的多,效率極低。

              當前解決的辦法:使用的是遞歸來解決文件夾嵌套建立的問題。

 

              遞歸的好處:不斷調用自身,進行文件夾建立。

 

  遞歸使用的注意事項:

    須要遞歸的過程當中,設置出口,中止定義,不然就會一直調用致使堆棧溢出。

              遞歸的算法:當前重複調用方法,直到拿到預期的目標跳出遞歸,進入出口。

 

              遞歸的使用中:

                     入口:調用自身。

                     出口:獲得預期的目標,跳出進入出口,結束調用本身。

 

三、        IO流,分爲字節流和字符流

  一、字節流和字符流

  字符流:只能對文本文檔操做的流對象,由於當前讀寫設置的是char類型的容器。

 

  字節流:是萬能流,不只能夠對文本文檔操做,還能對其餘類型的文檔操做,好比圖片、視頻、音頻等等,由於當前讀寫設置的容器類型爲byte類型,根據字符的編碼存儲編碼的序號數字,進行轉譯。

 

  二、字節流與字符流,當前的效率字節流要快於字符流。

  字節流複製文件,一個須要800多毫秒便可,可是字符流複製文件,一個須要7秒,一樣的大小200多MB的文件。

    一、 在公司中開發,咱們經常使用的是字節流,由於字節流對應功能侷限性小,效率高。

    二、 當前咱們學習字符流和字節流中,咱們還學習了對應的高效輸出輸入流。

    三、 字節高效的輸入輸出流,要快於普通字節流,快的速度800毫秒能夠縮短到300毫秒。

 

    字符流也是同理,高效的要高於普通的,由於高效的能夠讀取一行,直接寫入,須要換行寫入的時候能夠插入換行。

 

  三、爲何高效的要快:由於當前底層設置了緩衝區,咱們能夠建立高效流的同時使用默認緩衝區,或者自定義緩衝區,咱們通常使用默認便可,由於默認已經足夠咱們使用了。

              默認緩衝區大小:8192字節。

 

6、 多線程

一、        多線程的開啓方式

  一、方法一:本身建立一個對象,繼承多線程對象,進行建立多線程。

 

 

 

 

              二、方法二:經過實現一個接口Runnable接口,讓多線程對象使用。

 

 

 

 

二、        多線程設置同步鎖

  一、方式一:使用同步代碼塊:關鍵步驟上鎖

  注意:鎖對象必須是一致的,通常使用class文件,保持一致。或者使用單例設計模式建立對象。

 

       二、方式二:同步方法:將整個方法進行上鎖

  注意:當前線程能夠開啓多個,可是runnable實現類必須只有一個,不能實現多個實現類,不然同步方法無效

  方法三:靜態同步方法,全部的對象都上鎖,一鎖鎖全部

  注意:當前若是要實現多個runnable實現類,不一樣的對象間使用方法鎖的話,可使用靜態同步方法,這樣的話就可以解決方法二不能鎖住的問題。

 

       三、方法三:靜態同步方法,全部的對象都上鎖,一鎖鎖全部

  注意:當前若是要實現多個runnable實現類,不一樣的對象間使用方法鎖的話,可使用靜態同步方法,這樣的話就可以解決方法二不能鎖住的問題。

三、        兩種設計模式

  一、 單例設計模式

  懶漢式:

 

 

 

  餓漢式:

 

 

 

  二、 生產者與消費者模式

  一、生產者生產數據到緩衝區中,消費者從緩衝區中取數據。

  若是緩衝區已經滿了,則生產者線程阻塞;

  若是緩衝區爲空,那麼消費者線程阻塞。

 

  二、wait:等待方法

  被等待的線程是自身喚醒的,必須得依靠別的線程或者對象喚醒,喚醒經過鎖對象調用喚醒方法。

 

  三、notify:喚醒方法(喚醒單個)

        喚醒單個:隨機喚醒等待的線程中的一個線程

       

  四、notifyAll:喚醒方法(喚醒所有)

  喚醒所有:將當前全部等待的線程進行喚醒,喚醒後不必定全部線程都執行,具體誰執行還須要看CPU給誰分配了資源搶佔了鎖對象。

  注意:當前鎖對象若是不是同一把鎖,就沒法喚醒,同時也可能產生一直等待的狀態,線程堵塞

 

  五、sleep方法,當前休息睡眠必定的時間後,本身就可以清醒過來,進行繼續運行。

  區別:等待喚醒機制,若是當前處於等待的狀態,就會釋放鎖對象,丟給其餘對象使用而且執行,當前自身處於等待不執行的狀態。 睡眠方法,則不一樣,當前線程若是是睡眠方法,那麼在睡眠的過程當中是不會釋放鎖資源的,等清醒後,繼續操做執行,直到執行結束,結束操做,釋放鎖資源,提供給其餘對象使用。

7、 網絡編程

  一、網絡編程的三要素:IP地址、端口號、網絡協議。

 

  二、網絡協議:底層協議:UDP、TCP

              UDP:直接鏈接的網絡協議,通常使用的場景:視頻、語音、聊天室。

 

              TCP:三次握手鍊接,通常使用的場景:傳輸圖片、發送聊天文字等等。

 

              區別:

                     UDP:效率快,可是數據丟失沒法找回,數據傳輸不穩定。

                     TCP:效率相對慢,傳輸的數據,穩定丟失比較低。

 

              使用網絡協議傳輸的過程當中,咱們基本上使用的都是流對象傳輸。

 

8、 反射與正則表達式

一、反射

  一、對象反射的方式一共有:三種

              第一種:建立出來對象,經過對象的引用獲取。

              第二種:經過類的包名 + 類名直接尋找。

              第三種:直接經過類名調用class關鍵字。

       二、暴力訪問,將setAccessible的狀態設爲true,而後就能夠獲取私有的屬性和方法。

      

  二、正則表達式

       一、使用一個正則對象

static Pattern

compile(String regex)
          將給定的正則表達式編譯到模式中。

 

Matcher

matcher(CharSequence input)
          創匹配給定輸入與此模式的匹配器。

 

boolean

matches()
          嘗試將整個區域與模式匹配。

   使用示例:

 

相關文章
相關標籤/搜索