java day07第七课静态的和单例设计模式
生活随笔
收集整理的這篇文章主要介紹了
java day07第七课静态的和单例设计模式
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
靜態(tài)的(static)和單例模式
main函數(shù)
主函數(shù)是一個(gè)特殊的函數(shù),作為程序的入口,可以被jvm調(diào)用主函數(shù)的定義
public 表示該函數(shù)的訪問權(quán)限是最大的。 static 代表主函數(shù)隨著類的加載就已經(jīng)存在了。 void 主函數(shù)沒有具體的返回值。 main 不是關(guān)鍵字,但是是一個(gè)特殊的單詞,但是可以被jvm識(shí)別。 參數(shù)(String[] args) 參數(shù)的類型是一個(gè)數(shù)組,該數(shù)組的元素師String。 args 參數(shù)名,所以可以改,args 全稱arguments。 主函數(shù)是固定格式的,為了使jvm識(shí)別。 jvm在調(diào)用主函數(shù),傳入的是new String[0].我們也可以傳入給定的值。 錯(cuò)誤演示: public static void main(int a) {System.out.println("Hello World!");}public static void main(String[] args,int a) {System.out.println("Hello World!");}靜態(tài)什么時(shí)候使用
靜態(tài)修飾的內(nèi)容有成員變量和成員函數(shù)。
什么時(shí)候定義靜態(tài)變量呢?
什么時(shí)候定義靜態(tài)函數(shù)呢?
當(dāng)功能內(nèi)部沒有訪問到非靜態(tài)數(shù)據(jù)(對(duì)象的特有數(shù)據(jù)),那么該功能可以定義成靜態(tài)的。 class Person{String name;public static void run(){System.out.println("我是誰?");} } class Test{ public static void main(String[] args) {Person p = new Person();p.run();/*我們沒有用到對(duì)象的屬性,沒必要通過對(duì)象來調(diào)用方法,我們可以直接使用:Person.run(),所以必須加上static,如果我們要加上System.out.println(name+"我是誰?");這個(gè)時(shí)候我們就不能用static。*/}靜態(tài)代碼塊
格式: static{靜態(tài)代碼塊中執(zhí)行的語句 }特點(diǎn)
隨著類的加載而執(zhí)行,只執(zhí)行一次。一般用于給類的初始化練習(xí):
靜態(tài)代碼塊,構(gòu)造代碼塊,構(gòu)造方法執(zhí)行順序?
單例設(shè)計(jì)模式
解決某一類問題最行之有效的方法。java 中一共有二十三種設(shè)計(jì)模式。
單例設(shè)計(jì)模式:
先初始化對(duì)象稱之為餓漢式子。 解決一個(gè)類在內(nèi)存中只存在一個(gè)對(duì)象。 class Single(){private Single(){}Single ss = new Single();public Single getSingle(){return ss;}}class Demo(){public static void main(String[] args) {//new Single();//new Single();/* 想要保證對(duì)象的唯一:1、為了避免其他程序過多建立該類對(duì)象,先禁止其他程序建立該類對(duì)象。2、為了讓其他程序可以訪問到該類程序,只好在本類中自定義一個(gè)對(duì)象。3、為了方便其他程序?qū)ψ远x對(duì)象的訪問,可以對(duì)外提供一些訪問方式。*/}}實(shí)現(xiàn):
1、構(gòu)造函數(shù)私有化;2、在類中創(chuàng)建一個(gè)本類對(duì)象;3、提供一個(gè)方法可以獲取到該對(duì)象;實(shí)現(xiàn)方式二:
對(duì)象是方法被調(diào)用時(shí),才初始化,也叫做對(duì)象的延時(shí)加載,稱為:懶漢式class Single{ private static Single s = null; private Single(){} public static Single getSingle(){if(s == null){synchronized(Single.class){if(s == null){s = new Single();}}} return s; }}
轉(zhuǎn)載于:https://www.cnblogs.com/chendujie/p/6804999.html
總結(jié)
以上是生活随笔為你收集整理的java day07第七课静态的和单例设计模式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【BZOJ3527】【ZJOI2014】
- 下一篇: asp.net ajax控件工具集 Au