国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - 一篇文章帶你了解this關鍵字和單例模式

一篇文章帶你了解this關鍵字和單例模式

2020-12-29 23:23Java進階學習交流Java進階者 Java教程

This關鍵字可以為調用了方法的那個對象生成相應的地址,從而獲得了對調用本方法的那個對象的引用。當方法需要訪問類的成員變量時,就可以使用this引用指明要操作的對象。

一篇文章帶你了解this關鍵字和單例模式

一、this關鍵字

1.假設在類定義int類型成員變量年齡age,在構造方法使用的是a(age=a),這樣造成可讀性比較差,所以需要將一個類中表示年齡的變量統一的命名,都聲明為age。此時當成員變量和局部變量名一樣導致在構造方法中無法訪問對象的其他成員。,這時候在java程序中引用了這個this關鍵字。

2.this關鍵字可以為調用了方法的那個對象生成相應的地址,從而獲得了對調用本方法的那個對象的引用。當方法需要訪問類的成員變量時,就可以使用this引用指明要操作的對象。

3.解決成員變量和局部變量的名一樣,我們可以使用this關鍵字去訪問一個類的成員變量。

例如:

public class Person1 { 

public String name;//成員變量--年齡 

public int age;//成員變量--年齡 

public Person1(String nameint age){ 

        this.name = name;//為name屬性賦值 

        this.age = age;//為age屬性賦值 

//say()方法 

public void say(){ 

    System.out.println("你好!我是" + this.name + ",今年" + this.age + "歲。"); 

public static void main(String[] args) { 

    // TODO Auto-generated method stub 

    Person1 p1 = new Person1("李華", 20);//創建第一個對象 

    Person1 p2 = new Person1("小名", 19);//創建第二個對象 

    p1.say();//調用對象的方法 

    p2.say();//調用對象的方法 

    } 

輸出的結果是:

  • 你好!我是李華,今年20歲。 
  • 你好!我是小名,今年19歲。 

上面代碼中,構造方法的參數定義為(String name,int age),它是一個局部變量,在類中定義了成員變量name和age,如果在構造方法使用name和age訪問的是局部變量,在構造方法使用this.name和this.age的訪問的是成員變量。

4.通過this關鍵字調用成員方法:

public class Person1 { 

public String name;//成員變量--年齡 

public int age;//成員變量--年齡 

public Person1(String nameint age){ 

        this.name = name;//為name屬性賦值 

        this.age = age;//為age屬性賦值 

//print()方法 

public void print() { 

System.out.println("************************"); 

//say()方法 

public void say(){ 

this.print();//調用方法 

    System.out.println("你好!我是" + this.name + ",今年" + this.age + "歲。"); 

public static void main(String[] args) { 

    // TODO Auto-generated method stub 

    Person1 p1 = new Person1("李華", 20);//創建第一個對象 

    Person1 p2 = new Person1("小名", 19);//創建第二個對象 

    p1.say();//調用對象的方法 

    p2.say();//調用對象的方法 

    } 

輸出的結果是:

  • ************************ 
  • 你好!我是李華,今年20歲。 
  • ************************ 
  • 你好!我是小名,今年19歲。 

上面代碼中,通過this關鍵字調用成員方法,寫了一個print()方法在say()放在中調用成員方法并輸出。5.構造方法在實例化對象時被java虛擬機(JVM)自動調用,在程序不能像調用其他方法去調用構造方法,可以在構造方法中使用this([參數1,參數2,...,參數n])的方式來調用其他的構造方法。

例如:

public class Person2 { 

public String name

public int age; 

//定義無參的構造方法 

public Person2(){ 

    System.out.println("無參構造方法被調用...."); 

//定義兩個有參的構造方法 

public Person2(String name,int age){ 

    this();//調用無參的構造方法 

    this.name=name

    this.age=age; 

    System.out.println("你好!我叫"+this.name+"今年"+this.age+"歲!"); 

     

public static void main(String[] args) { 

    // TODO Auto-generated method stub 

    Person2 p=new Person2("李華",19);//實例化Person2對象 

    } 

輸出的結果是:

  • 無參構造方法被調用.... 
  • 你好!我叫李華今年19歲! 

上面代碼中,在實例化Person2對象后,調用了兩個有參的構造方法,在這個方法中調用了無參的構造方法,并打印出”無參構造方法被調用....”,在實例化Person2對象中傳入了參數的值,最后輸出”你好!我叫李華今年19歲!”,這兩個構造方法都被調用了。

二、單例模式

1.什么是單例模式

單例模式是:一個類當中只有一個實例,并且提供一個訪問它的全局訪問點。

2.單線程中,單例模式根據實例化對象時機不同,由兩種經典實現分別是餓漢式單例和懶漢式單例。

3.餓漢式單例定義類的靜態私有變量同時進行實例化

餓漢式單例案例:

public class Singleton { 

// 自己創建一個對象 

private static Singleton singleton = new Singleton(); 

// 私有的構造方法 

private Singleton(){ 

 

// 提供返回這個對象的靜態方法 

public static Singleton getInstance() { 

    return singleton; 

public static void main(String[] args) { 

    // TODO Auto-generated method stub 

    Singleton s1=Singleton.getInstance(); 

    Singleton s2=Singleton.getInstance(); 

    System.out.println(s1==s2); 

    } 

輸出的結果是:true

從上面的代碼中,聲明靜態私有類變量,并且立馬實例化,實例化一次。類的構造方法中使用private修飾,這樣就不能在類的外部使用new來創建實例化對象。私有的構造方法,是為了防止外部實例化,如果想讓類的外部獲取類的實例對象,提供public中的getInstance()方法獲取單例實例。

4.懶漢式單例就是延遲加載,等到需要使用的時候去創建實例,不是主動創建。

懶漢式單例案例

public class Singleton1 { 

//聲明私有變量 

private static Singleton1 singleton1 = null

// 私有的構造方法 

private Singleton1() { 

//提供返回這個對象的靜態方法 

public static Singleton1 getInstance() { 

    //被動創建,真正需要使用時才去創建 

    if (singleton1 == null) { 

    singleton1 = new Singleton1(); 

    } 

    return singleton1; 

public static void main(String[] args) { 

    // TODO Auto-generated method stub 

    Singleton1 s1=Singleton1.getInstance(); 

    Singleton1 s2=Singleton1.getInstance(); 

    System.out.println(s1==s2); 

    } 

輸出的結果是:true

從上面的代碼中,單例實例被延遲加載,只要真正需要用到的時候才會實例化一個對象交給自己使用。

三、總結

本文主要介紹了this關鍵字、單例模式。

this關鍵字可以為調用了方法的那個對象生成相應的地址,從而獲得了對調用本方法的那個對象的引用。當方法需要訪問類的成員變量時,就可以使用this引用指明要操作的對象。

單例模式是一個類當中只有一個實例,并且提供一個訪問它的全局訪問點。通過餓漢式和懶漢式案例來理解這個單例模式的用法。希望大家通過本文的學習,對你有所幫助!

原文地址:https://mp.weixin.qq.com/s/MRTkNju_eRQb3ja08U8jpg

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 国产高清视频一区二区 | 91电影在线| 欧美日韩在线综合 | 精品一区二区三区免费 | bxbx成人精品一区二区三区 | 91在线观看高清视频 | 青青久视频 | 在线观看中文字幕 | 亚洲色图 偷拍自拍 | 国产99久久精品 | 亚洲一区久久 | 九九久久免费 | 亚洲欧美视频 | 一区二区三区亚洲 | 日韩精品在线一区 | 啵啵羞羞影院 | 欧美成人精品一区二区男人看 | 免费成人福利视频 | 偷拍一区二区三区四区 | 久久成人免费视频 | 亚洲一区二区三 | 久久久91| 午夜伦4480yy私人影院 | 国产精品精品 | 亚洲热视频在线观看 | 久久福利 | 一级毛片免费完整视频 | 黄色一级毛片网站 | 免费午夜电影 | www.欧美精品 | av特黄| 在线播放黄 | 国产传媒一区 | 欧美成人自拍 | 黄网站涩免费蜜桃网站 | 中文字幕一区二区三区不卡 | 欧美自拍偷拍 | 久久毛片| 亚洲美女久久 | 91亚洲精品在线 | 亚洲欧美一区二区三区在线 |