Java實現(xiàn)撲克牌比大小---預備知識(構造方法,ArrayList用法,單例設計模式,)

一、預備知識

1. setter/getter方法

public private
公共的 私有的
外部可以直接訪問這個屬性或者方法 不希望外部訪問這個對象的一些屬性或方法
使用對象可以直接調用 只能間接使用
定義Poker類:
class Poker{
    private String number;
    private String color;


    //給外部提供一個set方法 通過這個方法間接給number賦值
    //可以對外部給的值進行控制
    public void setNumber(String number){
        this.number = number;
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }

    //給外部提供一個get方法訪問某個變量的值
    //封裝內(nèi)部實現(xiàn)
    public String getNumber(){
        return number;
    }

}


setter/getter方法的使用:
        //創(chuàng)建對象
        Poker poker = new Poker();
        poker.setNumber("jack");
        System.out.println(poker.getNumber());
  • 1. Alt+insert 快速產(chǎn)生setter getter方法

  • 2. 建議將setter/getter方法定義在類的最后面 ,避免干擾閱讀

  • 3. 成員變量的作用域,從對象的創(chuàng)建到對象被銷毀

image.png

2. 構造方法(在對象被創(chuàng)建時調用)

  • 希望在對象創(chuàng)建的時候 做點其他事

  • 在創(chuàng)建對象的時候,需要給屬性賦值,自定義構造方法

image.png
調用:
調用
輸出結果:
輸出結果
  • 構造方法的重載:同一個類里面有多個同名的方法,但是返回值或者參數(shù)不同,如public int nextInt() 和public int nextInt(int i)

3. static的用法

  • static:修飾的屬性和方法,都會在對象創(chuàng)建之前在靜態(tài)區(qū)里面優(yōu)先加載
實例方法/對象方法:必需創(chuàng)建一個對象才能調用的方法
類方法/靜態(tài)方法:不需要創(chuàng)建對象 直接用這個類調用
靜態(tài)屬性:1. 定義一個常量 只能賦值一次? 2.單例設計模式
class MyClass{
    public String name;
    public static String address;

    public void test(){
        System.out.println("這是對象方法");
    }

    public static void test2(){
        System.out.println("這是靜態(tài)方法");
    }
}
class T2{
    public static void main(String[] args){
        //使用類的類的實例方法/對象方法
        MyClass c1 = new MyClass();
        c1.test();

        //使用類方法/靜態(tài)方法
        MyClass.test2();

        //調用靜態(tài)屬性
        MyClass.address = "jack";
       
    }
}

什么情況下使用靜態(tài)方法:

  1. 工廠設計模式Factory
  2. 當不需要記錄數(shù)據(jù)的時候 只關心功能就可以使用靜態(tài)方法
    注意:一個靜態(tài)方法里面不能調用這個類的非靜態(tài)屬性和非靜態(tài)方法

4. this的用法

1. 什么時候用this:需要明確指定調用的是這個對象自己的一些屬性或者方法

2. this可以指創(chuàng)建的這個對象,也可以只調用這個方法的對象

image.png
image.png

5. ArrayList(動態(tài)數(shù)組)的使用

  • 什么是ArrayList
    ArrayList就是傳說中的動態(tài)數(shù)組,用MSDN中的說法,就是Array的復雜版本。當我們不知道到底有多少個數(shù)據(jù)元素的時候,就可使用ArrayList;如果知道數(shù)據(jù)集合有多少個元素,就用數(shù)組。
  • 如何構建ArrayList
    • 構造方法:ArrayList<String> list = new ArrayList<String>();
  • ArrayList常用方法

增加元素到鏈表中

  • boolean add(Element e)
    增加指定元素到鏈表尾部.
  • void add(int index, Element e)
    增加指定元素到鏈表指定位置.

從鏈表中刪除元素

  • void clear()
    從鏈表中刪除所有元素.
  • E remove(int index)
    刪除鏈表中指定位置的元素.
  • protected void removeRange(int start, int end)
    刪除鏈表中從某一個位置開始到某一個位置結束的元素。

獲取鏈表中的元素

  • E get(int index)
    獲取鏈表中指定位置處的元素.
  • Object[] toArray()
    獲取一個數(shù)組,數(shù)組中所有元素是鏈表中的元素.(即將鏈表轉換為一個數(shù)組)

修改某個元素

  • E set(int index, E element)
    將鏈表中指定位置上的元素替換成新元素。

搜索元素

  • boolean contains(Object o)
    如果鏈表包含指定元素,返回true.
  • int indexOf(Object o)
    返回元素在鏈表中第一次出現(xiàn)的位置,如果返回-1,表示鏈表中沒有這個元素。
  • int lastIndexOf(Object o)
    返回元素在鏈表中最后一次出現(xiàn)的位置,如果返回-1,表示鏈表中沒有這個元素。

檢查鏈表是否為空

  • boolean isEmpty()
    返回true表示鏈表中沒有任何元素.

獲取鏈表大小

  • int size()
    返回鏈表長度(鏈表包含元素的個數(shù)).

6. 引用類型和基本數(shù)據(jù)類型的區(qū)別

  • 基本數(shù)據(jù)類型

    • byte:Java中最小的數(shù)據(jù)類型,在內(nèi)存中占8位(bit),即1個字節(jié),取值范圍-128~127,默認值0

    • short:短整型,在內(nèi)存中占16位,即2個字節(jié),取值范圍-32768~32767,默認值0

    • int:整型,用于存儲整數(shù),在內(nèi)在中占32位,即4個字節(jié),取值范圍-2147483648~2147483647,默認值0

    • long:長整型,在內(nèi)存中占64位,即8個字節(jié)-263~263-1,默認值0L

    • float:浮點型,在內(nèi)存中占32位,即4個字節(jié),用于存儲帶小數(shù)點的數(shù)字(與double的區(qū)別在于float類型有效小數(shù)點只有6~7位),默認值0

    • double:雙精度浮點型,用于存儲帶有小數(shù)點的數(shù)字,在內(nèi)存中占64位,即8個字節(jié),默認值0

    • char:字符型,用于存儲單個字符,占16位,即2個字節(jié),取值范圍0~65535,默認值為空

    • boolean:布爾類型,占1個字節(jié),用于判斷真或假(僅有兩個值,即true、false),默認值false

  • 引用數(shù)據(jù)類型:類、接口類型、數(shù)組類型、枚舉類型、注解類型。

  • 區(qū)別:

    • 基本數(shù)據(jù)類型在被創(chuàng)建時,在棧上給其劃分一塊內(nèi)存,將數(shù)值直接存儲在棧上。

    • 引用數(shù)據(jù)類型在被創(chuàng)建時,首先要在棧上給其引用(句柄)分配一塊內(nèi)存,而對象的具體信息都存儲在堆內(nèi)存上,然后由棧上面的引用指向堆中對象的地址。

7. 單例設計模式

(1)將構造方法私有化,使其不能在類的外部通過new關鍵字實例化該類對象。

(2)在該類內(nèi)部產(chǎn)生一個唯一的實例化對象,并且將其封裝為private static類型。

(3)定義一個靜態(tài)方法返回這個唯一對象。

  • 實現(xiàn)一、立即加載 / “餓漢模式”

//餓漢模式
class Poker{
    //default,sharedInstance,manager
    //2.定義一個靜態(tài)的成員變量 記錄單例對象
    public static final Poker shared = new Poker();

    //1.私有化默認構造函數(shù)
    private Poker(){}

//3.  靜態(tài)方法返回該實例
public static Poker getInstance() {
    return shared;
}

}

  • 實現(xiàn)二、延遲加載 / “懶漢模式”

//懶漢模式
class Player{
    public int count = 0;
    //2.創(chuàng)建靜態(tài)變量  這里沒有final
    private static Player shared = null;

    //1.類的構造方法私有化
    private Player(){}

    //3.提供給外部一個訪問方法
    public static  Player getInstance(){   //線程安全的懶漢模式
            if (shared == null) {
                //如果沒有創(chuàng)建  那么就創(chuàng)建一個
                shared = new Player();
            }
      return shared;
    }

  • 實現(xiàn)三、線程安全的“懶漢模式”

class Player{
    public int count = 0;
    //2.創(chuàng)建靜態(tài)變量
    private static Player shared = null;

    //1.類的構造方法私有化
    private Player(){}

    //3.提供給外部一個訪問方法
    public static  Player getInstance(){   //線程安全的懶漢模式
        Object b = new Object();
        synchronized (b) {
            if (shared == null) {
                //如果沒有創(chuàng)建  那么就創(chuàng)建一個
                shared = new Player();
            }
        }
        return shared;
    }

二、心得體會

??demo的知識點主要就是這些了,想要知道怎么真正地與項目結合在一起,敬請期待接下來的更新!
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴謹 對...
    cosWriter閱讀 11,656評論 1 32
  • 這是16年5月份編輯的一份比較雜亂適合自己觀看的學習記錄文檔,今天18年5月份再次想寫文章,發(fā)現(xiàn)簡書還為我保存起的...
    Jenaral閱讀 3,143評論 2 9
  • 1.設計模式是什么? 你知道哪些設計模式,并簡要敘述?設計模式是一種編碼經(jīng)驗,就是用比較成熟的邏輯去處理某一種類型...
    龍飝閱讀 2,302評論 0 12
  • 重點掌握 3 類對象和方法 對象就是一個物體 類的獨特存在就是一個實例,對實例進行操作叫做方法。方法可以應用于類或...
    Coder大雄閱讀 1,368評論 0 2
  • 1.“人類最好的時刻,通常是在追求某一目標的過程中,把自身實力發(fā)揮得淋漓盡致之時”。幸福就是把當下的快樂和未來的意...
    xinyh閱讀 511評論 0 0

友情鏈接更多精彩內(nèi)容