日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

JavaSE面向对象学习笔记总结

發布時間:2023/12/20 java 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JavaSE面向对象学习笔记总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1,構造函數:

用于給對象進行初始化,是給與之對應的對象進行初始化,它具有正對性,函數中的一種。

特點: 1. 該函數的名稱和所在的類的名稱相同 2. 不需要定義返回類型 3. 該函數沒有具體的返回值記住:所有對象創建時,都需要初始化才可以使用。

注意事項:一個類在定義時,如果沒有定義過構造函數,那么該類中會自定生產一個空參數的構造函數,為了方便該類創建對象,完成初始化。如果該類中自己定義了構造函數,那么默認的構造函數就沒有了。

2,封裝(面向對象特征之一)

this

代表對象,就是所在函數所屬對象的引用。

this到底代表什么呢?哪個對象調用了this所在的函數,this就代表哪個對象,就是哪個對象的引用。開發時,什么時候使用this呢?在定義功能時,如果該功能內部使用到了該工作的對象,這時就用this來表示這 個對象。this還

static

關鍵字,是一個修飾符,用于修飾成員(成員變量和成員函數)

特點: 1. 想要實現對象中的共性數據的對象共享。可以將這個數據進行靜態修飾。 2. 被靜態修飾的成員,可以直接被類名所調用。也就是說,靜態的成員多了一種調用方式:類名.靜態方式。 3. 靜態隨著類的加載而加載。而且優先于對象存在。

3,設計模式

單例設計模式

解決的問題:保證一個類在內存中的對象的唯一性。比如:多程序讀取一個配置文件,建議配置文件封裝成對象。會方便操作其中數據,又要保證多個程序讀到的是同一個配置文件對象,就需要改配置文件對象在內存中是唯一的。

Runtime()方法就是單例設計模式進行設計的。

  • 餓漢式

    class Single{}
  • 懶漢式

4,繼承(面對對象特征之一)

final
抽象類:abstract
接口:interface
注意:接口中的成員都有固定的修飾符 成員變量:public static final 成員方法:public abstract eg: interface Inter{public static final int x = 3;public abstract voidshow(); }

5,多態(面對對象特征之一)

函數本身就具備多態性,某一種事物有不同的具體表現。

體現:父類引用或接口的引用指向了自己的子類的對象。//Animal a = newCat();

class Person{

6,內部類

如果A類需要直接訪問B類中的成員,而B類又需要建立A類的對象。這時,為了方便設計和訪問,直接將A類定義在B類中, 就可以了。A類就稱為內部類。內部類可以直接訪問外部類中的成員。而外部類想要訪問內部類,必須要建立內部類的對象。

當內部類定義在外部類中的成員位置上,可以使用一些成員修飾符修飾private、static。 1. 默認修飾符。 2. 私有修飾符 3. 靜態修飾符如果內部類被靜態修飾,相當于外部類,會出現訪問局部性,只能訪問外部類中的靜態成員。注意:如果內部類中定義了靜態成員,那么該內部類必須是靜態的。

內部類編譯后的文件名為:“外部類名$內部類名.java”

為什么內部類可以直接訪問外部類中的成員呢?

那是因為內部類中都持有一個外部類的引用。這個引用是 外部類名.this 內部類可以定義在外部類中的成員位置上,也可以定義在外部類中的局部位置上。 當內部類被定義在局部位置上,只能訪問局部中被final修飾的局部變量。

7,匿名內部類

沒有名字的內部類。就是內部類的簡化形式。一般只用一次就可以用這種形式。匿名內部類其實就是一個匿名子類對象。想要定義匿名內部類:需要前提,內部類必須繼承一個類或者實現接口。

匿名內部類的格式:new 父類名$接口名(){ 定義子類成員或者覆蓋父類方法 }.方法

匿名內部類的使用場景:

當函數的參數是接口類型引用時,如果接口中的方法不超過3個。可以通過匿名內部類來完成參數的傳遞。 其實就是在創建匿名內部類時,該類中的封裝的方法不要過多,最好兩個或者兩個以內。

8,異常

異常:就是不正常。程序在運行時出現的不正常情況。其實就是程序中出現的問題。
——java.lang.Throwable:
Throwable:可拋出的。
|–Error:錯誤。一般情況下,不編寫正對性的代碼進行處理,通常是jvm發生的,需要對程序進行修正。
|–Exception:異常,可以有正對性的處理方式。

9,多線程

進程:正在進行中的程序。其實進程就是一個應用程序運行時的內存分配空間。
線程:其實就是進程中的一個程序執行單元,一條執行路徑。進程負責的是應用程序的空間的表示。線程負責的是應用程序的執行順序。

一個進程至少有一個線程在運行,但一個進程中出現多個線程時,就稱這個應用程序是多線程應用程序,每個線程在棧區中都有自己的執行空間,自己的方法區,自己的變量。
jvm在啟動時,首先有一個主線程,負責程序的執行,調用的是main函數。主線程執行的代碼都在main方法中。
當產生垃圾時,收垃圾的動作,是不需要主線程來完成,因為這樣,會出現主線程中的代碼執行會停止,會去運行垃圾回收器代碼,效率較低,所以單獨一個線程來負責垃圾回收。

  • 同步代碼塊

    java中提供了一個解決方式:就是同步代碼塊。
    格式:
    synchronized(對象) { // 任意對象都可以。這個對象就是鎖。
    需要被同步的代碼;
    }

  • 同步函數

    其實就是將同步關鍵字定義在函數上,讓函數具備了同步性。
    同步函數是用的哪個鎖呢?
    通過驗證,函數都有自己所屬的對象this,所以同步函數所使用的鎖就是this鎖。

當同步函數被static修飾時,這時的同步用的哪個鎖呢?
靜態函數在加載時所屬于類,這時有可能還沒有改類產生的對象,但是該類的字節碼文件加載進內存就已經被封裝成了對象,這個對象就是該類的字節碼文件對象。
所以靜態加載時,只有一個對象存在,那么靜態同步函數就使用的這個對象。這個對象就是類名.class

同步代碼塊和同步函數的區別?

同步代碼塊使用的鎖可以是任意對象。 同步函數使用的鎖是this,靜態同步函數的鎖是該類的字節碼文件對象。 在一個類中只有一個同步,可以使用同步函數。如果有多同步,必須使用同步代碼塊, 來確定不同的鎖,所以同步代碼塊相對靈活一些。

Lock接口

多線程在JDK1.5版本升級時,推出一個接口Lock接口。

解決線程安全問題使用同步的形式,(同步代碼塊,要么同步函數)其實最終使用的都是鎖機制。

所以 同步是隱式的鎖操作,二Lock對象是顯示的鎖操作,它的出現就替代了同步。

String字符串:

StringBuffer字符串緩沖區

StringBuilder字符串緩沖區

Integer對象

集合框架

用于存儲數據的容器。
特點:
1. 對象封裝數據,對象多了也需要存儲。集合用于存儲對象。
2. 對象的個數確定可以使用數組,但是不確定怎么辦?可以用集合。因為集合是可變長度的。

集合與數組的區別:

  • 數組是固定長度的;集合是可變長度的。
  • 數組可是存儲基本數據類型,也可以存儲引用數據類型;集合只能存儲引用數據類型。
  • 數組存儲的元素必須是同一個數據類型;集合存儲的對象可以是不同的數據類型。
  • Collection接口

    Collection:
    |——List:有序(元素存入集合的順序和取出的順序一致),元素都有索引。元素可以重復。
    |——Set:無序(存入和取出順序有可能不一致),不可以存儲重復元素。必須保證元素的唯一性。

    Inerator接口:

    迭代器:是一個接口。作用:用于取集合中的元素。

    List接口:

    List本身是Collection接口的子接口,具備了Collection的所有方法。現在學習List體系特有的共性方法,查閱方法發現List的特有方法都有索引,這是該集合最大的特點。
    List:有序(元素存入集合的順序和取出的順序一致),元素都有索引。元素可以重復。
    |——ArrayList:底層的數據結構是數組,線程不同步,ArrayList替代了Vector,查詢元素的速度非常快。
    |——LinkedList:底層的數據結構是鏈表,線程不同步,增刪元素的速度非常快。
    |—— Vector:底層的數據結構就是數組,線程同步的,Vector無論查詢和增刪都巨慢。

    Set接口:

    Set接口中的方法和Collection中方法一致的。Set接口取出方式只有一種,迭代器。
    |——HashSet:底層數據結構是哈希表,線程時不同步的。無序,高效;HashSet集合保證元素唯一性:通過元素的hashCode方法,和equals方法完成的。當元素的hashCode值相同是,才繼續判斷元素的equals是否為true。
    如果為true,那么視為相同元素,不存。如果為false,那么存儲。
    如果hashCode值不同,那么不判斷equals,從而提高了對象比較的速度。
    |——LinkedHashSet:有序,hashSet的子類。
    |——TreeeSet:對Set集合中的元素的進行指定順序的排序。不同步。Tree底層的數據結構就是二叉樹。

    Map集合:

    |——Hashtable:底層是哈希表數據結構,是線程同步的。不可以存儲null鍵,null值。
    |——HashMap:底層是哈希表數據結構,是線程不同步的。可以存儲null值。替代了Hashtable。
    |——TreeMap:底層是二叉樹結構,可以對map集合中的鍵進行指定順序的排序。

    Collections:

    它的出現給集合提供了更多的功能。這個類不需要創建對象,內部提供的都是靜態方法。
    Collections.sort(list);//list集合進行元素的自然順序排序
    Collections.sort(list,new ComparatorByLen());//按指定的比較器方法排序

    Arrays:

    用于操作數組對象的工具類,里面都是靜態方法。

    泛型:

    jdk1.5 版本以后出現的一個安全機制。表現格式:< >

    好處

    1. 將運行時期的問題ClassCastException問題轉換成了編譯失敗,體現在編譯時期,程序員就可以解決問題。 2. 避免了強制轉換的麻煩。

    只要帶有了< >的類或者接口,都屬于帶有類型參數的類或者接口,在使用這些類或者接口時,必須給< >中傳遞一個具體的引用數據類型。

    API—java.lang.System:

    屬性和行為都是靜態的。

    API—java.lang.Runtime;

    類中沒有構造方法,不能創建對象。

    API—java.util.Math:

    用于數學運算的工具類,屬性和行為都是靜態的。該類時final不允許繼承。

    API—java.util.Data:

    日期類:月份從0-11;

    API—java.util.Calendar:

    日歷類

    IO流

    用于處理設備上數據

    • 字節流:InputStream OutputStream
    • 字符流:Reader Writer

    File類

    將文件系統中的文件和文件夾封裝成了對象。提供了更多的屬性和行為可以對這些文件和文件夾進行操作。這些是流對象辦不到的,因為流只操作數據。

    遞歸:

    就是函數自身調用自身

    RandomAccessFile:

    管道流:

    對象的序列化:

    目的:將一個具體的對象進行持久化,寫入到硬盤上。

    網絡編程:

    • 端口
    • Socket:

      • UDP傳輸:

      • 只要是網絡傳輸,必須有socket
      • TCP傳輸:

    • 反射技術:其實

    正則表達式:

    其實是用來操作字符串的一些規則

    創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

    總結

    以上是生活随笔為你收集整理的JavaSE面向对象学习笔记总结的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。