亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

基礎學習day06---面向對象二---static,類的初始化和調用順序、單例模式

2019-11-14 15:40:20
字體:
來源:轉載
供稿:網友

一、static關鍵字

1.1、static關鍵字

 

靜態:static
用法:是一個修飾符,用于修飾成員(成員變量,成員函數)
static 修飾的內容,所有對象共享
當成員被靜態修飾后,就多了一個調用方式,除了可以被對象調用外,還可以被類名.靜態成員

 package com.day06;/** * 人類 * @author Administrator *靜態:static *用法:是一個修飾符,用于修飾成員(成員變量,成員函數) *static 修飾的內容,所有對象共享 *當成員被靜態修飾后,就多了一個調用方式,除了可以被對象調用外, *還可以被類名.靜態成員 */public class Person {    //屬性    static String country="CN";        String name;    public void show(){        System.out.PRintln(this.name+"  "+this.country);    }        public static void main(String[] args) {        //多個對象使用同一個屬性國家        Person p=new Person();        Person p1=new Person();        p.name="張三";        p1.name="李四";        p.show();        p1.show();        System.out.println(Person.country); //類名.靜態成員變量    }}

 

特點:

 

1.隨著類的加載而加載--也就是:靜態會隨著類的消失而消失,它的生命周期最長。

2.優先于對象存在---

靜態是先存在,對象是后存在。

3.被所有對象共享

4.可以直接被類名所調用

1.2、實例變量和類變量的區別

 

1.存放位置

             類變量隨著類的加載而加載存在方法區中。

              實例變量隨著對象的建立而存在于堆內存中。

       2.生命周期

            類變量生命周期最長,隨著類的消失而消失

           實例變量生命周期隨著對象的消失而消失

1.3、使用注意事項

 

靜態方法只能訪問靜態成員(靜態成員和靜態方法)

非靜態方法既可以訪問靜態也可以訪問非靜態

靜態方法中不可以定義this. super關鍵字

因為靜態優先于對象存在,所以靜態中不可以出現this

主函數是靜態的

靜態有利有弊

利處:對對象共享數據進行單獨空間的存儲,節省內存空間,沒有必要每個對象都存儲一份

       可以直接被類名調用。

弊端:生命周期過長

         訪問出現局限性。(靜態雖好,只能訪問靜態。)

1.4、主函數是靜態的

主 函數:是一個特殊的函數,作為程序的入口,可以被JVM調用

定義:

public :代表差該該函數訪問權限是最大的

static:代表主函數隨著類的加載就已經存在了。

void:主函數沒有具體的返回值。

main():不是關鍵字,但是是一個特殊的單詞,可以被JVM識別。

函數的參數:String[] args--是一個數組,數組中的元素是字符串,字符串類型的數組

主函數是固定格式的,JVM識別。

args:arguments

JVM在調用主函數時,傳入的是new String[0]

 package com.day06;public class MainTest {    public static void main(String[] args) {        //遍歷主函數        for (int i = 0; i < args.length; i++) {            System.out.println(args[i]);        }    }}  package com.day06;public class MainDemo {    public static void main(String[] args) {        String [] arr={"張三","李四","王五","趙六","錢七"};        MainTest.main(arr);    }}

 


結果:

張三
李四
王五
趙六
錢七

1.5、什么時候使用靜態

2個方面:

靜態修飾的內容有成員變量和函數

什么時候定義靜態變量?

 當對象在出現共享數據時,該數據被static修飾

對象中的特有數據要定義成非靜態,存在于堆內存,對象內部

什么時候定義靜態函數
當功能內部沒有訪問到非靜態數據(對象的特有數據)

那么該 功能可以定義成靜態

1.6、靜態工具類

 

package com.day06;/** * 建立一個用于操作數組的工具類, 其中包含著常見的對數組操作的函數, 如:最值,排序等。 *  * @author Denny * @version v1.0 */public class ArrayTool {    /**     * 為了不讓外界創建對象,將構造方法私有化     * @author Denny     *      * @version v1.0     */    private ArrayTool() {    }    /**     * 獲取整型數組的最大值     *      * @param arr     *            接收一個元素為int 類型的數組     * @Return 該數組的最大的元素值     */    public static int getMax(int[] arr) {        int maxIndex = 0;        for (int x = 1; x < arr.length; x++) {            if (arr[x] > arr[maxIndex])                maxIndex = x;        }        return arr[maxIndex];    }    /**     * 對數組進行選擇排序     *      * @param arr     *            接收一個元素為int 的數組     */    public static void selectSort(int[] arr) {        for (int x = 0; x < arr.length - 1; x++) {            for (int y = x + 1; y < arr.length; y++) {                if (arr[x] > arr[y])                    swap(arr, x, y);            }        }    }    // 用于給數組進行元素的位置置換。    private static void swap(int[] arr, int a, int b) {        int temp = arr[a];        arr[a] = arr[b];        arr[b] = temp;    }    /**     * 獲取指定的元素在指定數組中的索引     *      * @param arr     *            接收一個元素為int 類型的數組     * @param key     *            要找的元素     * @return 返回該元素第一次出現的位置,如果不存在則返回 -1     */    public static int getIndex(int[] arr, int key) {        for (int x = 0; x < arr.length; x++) {            if (arr[x] == key)                return x;        }        return -1;    }

 

    /**     * 將int數組轉換成字符串,格式是:[e1,e2,...]     *      * @param arr     *            接收一個元素為int類型的數組     * @return 返回該數組的字符串表現形式     */    public static String arrayToString(int[] arr) {        String str = "[";        for (int x = 0; x < arr.length; x++) {            if (x != arr.length - 1)                str = str + arr[x] + ",";            else                str = str + arr[x] + "]";        }        return str;    }}

 


使用類名.靜態方法

 

 

二、靜態代碼塊

2.1、靜態代碼塊

static{

代碼塊;

}

 package com.day06;/** * 靜態代碼塊 *  * @author Denny static{ 靜態代碼塊中的語句 } *  特點:隨著類的加載而執行, 只執行一次 用于給類進行初始化 *  并優先于主函數 */class StaticDemo {    static {        System.out.println("static code A");    }}

 

public class StaticCode{    static {        System.out.println("static code B");    }        static {        System.out.println("static code C");    }    public static void main(String[] args) {                    //2個匿名對象            new StaticDemo();            new StaticCode();            }}

 


結果:

 

static code B
static code C
static code A

只執行一次就不在執行了

三、對象初始化過程

3.1、初始化過程

package com.day06;/** * 靜態代碼塊 *  * @author Denny  * static{ 靜態代碼塊中的語句 }  * 特點:隨著類的加載而執行, 只執行一次 用于給類進行初始化 并優先于主函數 */public class StaticCode {    int num=9;    public StaticCode() {        System.out.println("static code A");    }    static {        System.out.println("static code B");    }    {        System.out.println("con code C  "+this.num);    }    public StaticCode(int num) {        System.out.println("con code D");    }    public static void show(){        System.out.println("E");    }    public static void main(String[] args) {        new StaticCode(4);    }}

 

 


結果:

 

static code B
con code C  9
con code D

四、對象調用成員過程

4.1、初始化過程

1.因為new 用到了類.class,所以會先找到類.class

2.執行該類中的static代碼塊,如果有的話,給類.class進行初始化

3.堆內存中開辟空間,分配內存地址,

4.在堆內存中建立對象的特有屬性,并默認初化成員變量

5.對對象進行顯示初始化

6.對對象進行構造代碼塊初始化

7.對對象進行對應的構造函數初始化。

8.將內存地址賦給內存中的對象變量

 

五、單例模式

 

 

設計模式:對問題行之有效的解決方式,其實,它是一種思想。

    單例設計模式解決的問題:就是可以保證一個類在內存中的對象唯一性。
    比如多個程序使用同一個配置信息對象時,就需要保證該對象的唯一性。

    如何保證對象唯一性呢?
    1、不允許其他程序用new創建該類對象。
    2、在該類創建一個本類實例。
    3、對外提供一個方法讓其他程序可以獲取該對象。

    步驟:
    1、私有化該類構造函數。
    2、通過new在本類中創建一個本類對象。
    3、定義一個公有的方法,將創建的對象返回。

 

 

5.1、餓漢式

 

 package com.day06;/** * 餓漢式 * @author denny * */public class SingleDemo {    private String name;    private int age;    private static SingleDemo singleDemo=new SingleDemo();        //私有 構造方法    private SingleDemo(){                    }    //提供公有的訪問    public static SingleDemo getNewIntance(){        return singleDemo;    }    public static void main(String[] args) {        SingleDemo s1=SingleDemo.getNewIntance();        SingleDemo s2=SingleDemo.getNewIntance();        System.out.println(s1==s2);    }}

 

 


結果:true

 

 

5.2、懶漢式

 

 package com.day06;/** * 餓漢式 * @author denny * */public class SingleDemo2 {    private String name;    private int age;    private static SingleDemo2 singleDemo2;        //私有 構造方法    private SingleDemo2(){                    }    //提供公有的訪問    public static SingleDemo2 getNewIntance(){        if(singleDemo2==null){            singleDemo2=new SingleDemo2();        }        return singleDemo2;    }    public static void main(String[] args) {        SingleDemo2 s1=SingleDemo2.getNewIntance();        SingleDemo2 s2=SingleDemo2.getNewIntance();        System.out.println(s1==s2);    }}

結果:true

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
中文字幕欧美日韩精品| 日韩在线视频网| 丝袜情趣国产精品| 日韩精品在线私人| 影音先锋日韩有码| 国产欧美欧洲在线观看| 亚洲精品福利在线| 国产精品久久久久久五月尺| 日韩精品视频在线免费观看| 日韩一级裸体免费视频| 一区二区三区高清国产| 91热精品视频| 都市激情亚洲色图| 欧美精品一区三区| 国模精品系列视频| 亚洲综合在线做性| 国产婷婷97碰碰久久人人蜜臀| 亚洲欧美一区二区激情| 久久久久www| 成人精品视频99在线观看免费| 久久综合88中文色鬼| 亚洲精品国产成人| 亚洲成人激情在线| 亚洲国产成人精品电影| 中文字幕免费精品一区高清| 亚洲图片欧洲图片av| 韩国日本不卡在线| 亚洲国产女人aaa毛片在线| 97视频免费在线看| 国产精品久久久久久久久免费看| 国产一区二区三区在线免费观看| 国产精品一区二区三区免费视频| 精品高清美女精品国产区| 51视频国产精品一区二区| 欧美另类极品videosbestfree| 日韩暖暖在线视频| 国产视频在线一区二区| 国产91在线播放| 在线观看日韩www视频免费| 国产精品老牛影院在线观看| 亚洲片在线资源| 在线播放日韩专区| 91久久精品久久国产性色也91| 欧日韩在线观看| 69久久夜色精品国产69| 欧美视频二区36p| 日韩av大片在线| 日韩精品黄色网| 91人人爽人人爽人人精88v| 久热精品视频在线观看一区| 91中文精品字幕在线视频| 久久综合色影院| 伊人精品在线观看| xxx欧美精品| 视频在线观看一区二区| 尤物yw午夜国产精品视频明星| 国产欧美一区二区三区四区| 98精品国产高清在线xxxx天堂| 日韩欧美成人免费视频| 国产精品久久久久影院日本| 亚洲福利小视频| 国产视频在线观看一区二区| 日韩中文字幕在线免费观看| 成人午夜在线视频一区| 亚洲福利视频网| 亚洲国产精彩中文乱码av| 97国产真实伦对白精彩视频8| 亚洲成人激情小说| 色偷偷av一区二区三区| 欧美日韩另类在线| 欧美日韩亚洲国产一区| 亚洲欧美日本伦理| 国产亚洲视频在线观看| 国产精品精品久久久| 91九色单男在线观看| 精品国产一区二区三区久久| 欧美三级欧美成人高清www| 91高清在线免费观看| 欧美成人三级视频网站| 精品国内产的精品视频在线观看| 国产精品日韩欧美综合| 国产精品女主播视频| 黑人巨大精品欧美一区二区免费| 黄网动漫久久久| 亚洲国产精品久久久久秋霞不卡| 亚洲成av人乱码色午夜| 91精品国产综合久久香蕉| 日本一欧美一欧美一亚洲视频| 日韩中文字幕在线精品| 久热爱精品视频线路一| 精品无人区乱码1区2区3区在线| 美女黄色丝袜一区| 久久97精品久久久久久久不卡| 在线丨暗呦小u女国产精品| 欧美成人手机在线| 国产精品美女久久久久久免费| 国产亚洲欧洲高清一区| 久久久精品2019中文字幕神马| 亚洲精品视频中文字幕| 精品国产网站地址| 91亚洲va在线va天堂va国| 91chinesevideo永久地址| 国模视频一区二区| 欧美一级视频在线观看| 国产精品国内视频| 亚洲欧美制服中文字幕| 日韩中文字幕不卡视频| 97视频在线播放| 亚洲精品电影在线观看| 亚洲美女黄色片| 97香蕉超级碰碰久久免费软件| 精品亚洲一区二区三区四区五区| 日韩av中文字幕在线免费观看| 热草久综合在线| 欧美高清视频免费观看| 视频在线观看一区二区| 亚洲国产精品女人久久久| 精品国产自在精品国产浪潮| 中文字幕综合在线| 欧美一区二区三区免费视| 日本电影亚洲天堂| 日韩高清av一区二区三区| 久久中文字幕国产| 国产欧美精品va在线观看| 97视频网站入口| 欧美精品福利在线| 57pao国产精品一区| 国产精品成人av性教育| 九九热这里只有精品6| 欧美激情一区二区三区在线视频观看| 欧美在线视频免费观看| 伊人青青综合网站| 国产精品777| 亚洲美女av在线| 最近2019年中文视频免费在线观看| 亚洲在线视频福利| 国产精品福利在线观看| 伦理中文字幕亚洲| 成人午夜黄色影院| 国产网站欧美日韩免费精品在线观看| 国产精品爱久久久久久久| 亚洲欧美色图片| 久久久久久国产三级电影| 亚洲3p在线观看| 国产精品爽黄69天堂a| 成人精品福利视频| 色综合久久久888| 日韩av在线网页| 欧美电影免费观看| 亚洲伊人久久综合| 日本sm极度另类视频| 热门国产精品亚洲第一区在线| 成人av在线天堂| 日韩美女视频免费看| 欧美成人剧情片在线观看| 免费成人高清视频| 国产精品欧美日韩久久| 久久视频免费在线播放| 亚洲国产成人久久综合一区| 亚洲最大成人免费视频| 欧美裸体视频网站| 一区二区三区视频观看| 在线精品国产成人综合| 久久夜色撩人精品|