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

歡迎訪問 生活随笔!

生活随笔

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

java

11.Java面向对象(二)

發布時間:2024/8/22 java 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 11.Java面向对象(二) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

01.面向對象(static關鍵字)

用法:是一個修飾符,用于修飾成員(成員變量和成員函數)。
當成員被靜態修飾后,就多了一種調用方式,除了可以被對象調用之外,還可以被類名直接調用。類名.靜態成員。
對象的特有內容隨著對象存儲,共有內容可以定義為靜態的,放在共享區。
類中的方法區,共享區,數據區都在同一個區。

static的特點:
(1)隨著類的加載而加載,隨著類的消失而消失。也就是說,靜態會隨著類的消失而消失,說明他的生命周期最長。
(2)優先于對象存在;明確一點:靜態先存在,對象后存在。
(3)被所有對象所共享;
(4)可以直接被類名調用。
實例變量和類變量的區別:
(1)存放位置:類變量隨著類的加載而存在與方法區中;實例變量隨著對象的建立而存在于堆內存中。
(2)生命周期:類變量的生命周期最長,隨著類的消失而消失;實例變量的生命周期隨著對象的消失而消失。
靜態的使用注意事項:
(1)靜態方法只能訪問靜態成員和靜態方法。因為靜態方法和變量在類加載時就在了,非靜態變量在對象存在時才存在
(2)非靜態方法可以訪問靜態也可以訪問非靜態。
(3)靜態方法中不可以定義this,super關鍵字。因為靜態優先于對象存在,所以靜態方法不可以出現this。
(4)主函數是靜態的。
靜態有利有弊:
利:對對象的共享數據進行單獨空間的存儲,節省空間的內存,沒有必要每個對象都存儲一份;可以直接被類名調用。
弊:生命周期過長,訪問出現局限性,靜態雖好只能訪問靜態。

02.面向對象(主函數main)

主函數:是一個特殊的函數,作為程序的入口,可以被jvm調用。
主函數的定義:
public:代表著該函數訪問權限是最大的。
static:代表著主函數隨著類的加載就已經存在。
void:主函數沒有具體的返回值。
main:不是關鍵字,但是是一個特殊的單詞,可以被jvm識別。
函數的參數(String[] args):參數類型是一個數組,該數組中的元素是字符串,字符串類型的數組。

jvm在調用主函數時,傳入的是new String[0];
啟動jav虛擬機,并為主函數傳參數:java TestMain haha heiehi
這說明java虛擬機在執行TestMain時給主函數傳入了haha和嘿嘿兩個參數。
還可以用下面的方法:
class MainDemo
{
?public static void mian(String[] args)
?{
??String[] arr={"1","2","3"};
??Maintest(arr);
?}
}
class Maintest
{
?public static void main(String[] args)
?{
??for(int i=0;i<args.length;i++)
??{
???System.out.println(args[i]);
??}
?}
}

03.面向對象(什么時候使用靜態)

要從兩方面下手:
因為靜態修飾的內容是成員變量和函數。
什么時候定義靜態變量(類變量)呢?
當對象中出現共享數據時,該數據被靜態所修飾;對象中的特有數據要定義成非靜態存在于堆內存中。

什么時候定義靜態函數呢?

當功能內部沒有訪問到非靜態數據(對象的特有數據),那么該功能可以被定義成靜態的。

04.面向對象(靜態的應用--工具類)

每個應用程序中都有共性的功能,可以將這些功能進行抽取,進行封裝。
當考慮讓程序更嚴謹時,如果不需要對象,可以將一個類中的成員設為靜態的,直接通過類名調用即可。
將方法都靜態后,可以方便于使用,但是該類還是可以被其他程序建立對象的,為了更嚴謹,應該強制該類不能建立對象,可以將構造函數私有化就不允許建立對象了。

05.面向對象(幫助文檔的制作)

java的說明書通過文檔注釋來完成。
格式:
/**
功能說明語句
@author 作者
@version 版本
@param 參數
@return 返回值
*/
每個類和凡是用public修飾的成員函數都要用文檔注釋給說明。

給一個類生成文檔:
javadoc -d 目錄(路徑) -author -version
給一個類生成文檔,該類必須是public的

一個類中默認會有一個空參數的構造函數,這個默認的構造函數的權限和所屬類一致。
如果被public修飾,那么默認的構造函數也帶public修飾符。
如果類沒有被public修飾,那么默認的構造函數,也沒有public修飾符。
默認的構造函數的權限是隨著所屬類的變化而變化。

06.面向對象(靜態代碼塊)

static
{
?靜態代碼塊的執行語句;
}

特點:隨著類的加載而執行,只執行一次用于給類進行初始化的。在主函數前的靜態代碼塊優先于主函數執行。

當一個類被new一個對象時,類中的構造代碼塊,靜態代碼塊,構造函數執行順序是:靜態代碼塊,構造代碼塊,構造函數。

靜態代碼塊隨著類的加載而加載,只能調用靜態成員。

07.面向對象(對象的初始化過程)

加載“類.class”文件;靜態代碼塊執行(沒有就不執行);構造代碼塊初始化;構造函數初始化;
Person p=new Person(“張三”,20);
這一句話所做的事:
1.因為new用到了Person.class,所以會先找到Person.class文件并加載到內存中。
2.執行該類中的靜態代碼塊,如果有的話,給Person.class類進行初始化。
3.在堆內存中開辟空間,分配內存地址。
4.在堆內存中建立對象的特有屬性,并進行默認初始化。

5.對屬性進行顯示初始化。
6.對對象進行構造代碼塊初始化。
7.對對象進行對應的構造函數初始化。
8.將內存地址賦給棧內存中的變量。

08.面向對象(對象調用成員過程)

09.面向對象(單例設計模式)

設計模式:java中有23中設計模式。
解決某一類問題最行之有效的方法。
單例設計模式:解決一個類在內存中只存在一個對象。
想要保證對象唯一:
(1)為了避免其他程序過多建立該類對象,先禁止其他程序建立該類對象。
(2)還為了讓其它程序可以訪問到該類對象,只好在本類中自定義一個對象。
(3)為了方便其他程序對自定義對象的訪問,可以對外提供一些訪問方式。
這三部怎么體現:
(1)將構造函數私有化
(2)在類中創建一個本類對象,
(3)提供一個方法可以獲取到該類對象。

class Single
{
?private Single(){}
?private static Single s=new Single();
?public Static Single getInstance()
?{
??return s;
?}
}
在類外,用Single s=Single.getInstance();訪問。

對于事物該怎么描述,還怎么描述。
需要將該事物的對象保存在內存中唯一時,只要加上面三步就行。

10.面向對象(單例設計模式2)

單例設計模式的第二種寫法:
class Single
{
?private static Single s=null;
?private Single(){}
?public static synchronized Single getInstance()
?{
??if(s==null)
???s=new Single();
??return s;
?}
}
第一種模式是先初始化對象,稱為餓漢式。
特點:Single類一進內存,就已經創建好了對象。餓了就做。
搞開發時一般用餓漢式。
第二種方式調用時才被初始化,稱為懶漢式。
特點:Single類進內存,對象還沒有存在,只有調用了getInstance()方法時,才建立對象。剛開始時不做,什么時候需要什么時候做。
synchronized是給該方法上鎖,當有一個對象操作該方法時,別的對象就不能操作。是為了防止兩個對象同時操作該方法。
懶漢式最終解決方案:
class Single
{
?private static Single s=null;
?private Single(){}
?public static Single getInstance()
?{
??if(s==null)
??{
???synchronized(Single.class)
???{
????if(s==null)
????{
?????s=new Single();
????}
???}
??}
??return s;
?}
}
記住原則:定義單例,建議使用餓漢式。

轉載于:https://www.cnblogs.com/xu-qian-gang/archive/2012/04/15/2450735.html

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的11.Java面向对象(二)的全部內容,希望文章能夠幫你解決所遇到的問題。

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