1.什麼時候可以將方法定義爲靜態方法(將整個類定義爲工具類)?
a.類中的每個方法都沒有用到類的對象的特有數據b.這時就可以考慮將方法定義成static,直接通過類名調用即可
c.但是該類還是可以被其他程序建立對象,
爲了更嚴謹,強制讓該類不能建立對象
可以通過構造函數私有化完成
2.如何製作java程序說明書?
a.通過文檔註釋來完成。
b.此類必須定義成public類型
c.而且生成的文檔中,只能顯示public的函數。因爲private是不需要對外公開的
<span style="font-size:14px;"> /** 簡單測試:生產java幫助文檔 @author 喬棟
@version 1
*/
public class TestPerson
{
private String name;
private int age;
/** 設置年齡
@param age 接受一個int型數字
*/
public void setAge(int age)
{
this.age = age;
}
/**
獲取年齡
@return 返回年齡
*/
public int getAge()
{
return age;
}
}</span>
<span style="font-size:14px;"> public class TestPerson { private String name; private int age; /** 設置年齡 @param age 接受一個int型數字 */ public void setAge(int age) { this.age = age; } /** 獲取年齡 @return 返回年齡 */ public int getAge() { return age; } }</span>
cmd中的寫法:javadoc -d myhelp -author -version TestPerson.java
3.默認構造函數:
一個類中會有一個默認的空參數的構造函數
類爲public時,此構造也爲public;即默認構造函數和類的權限一致。
4.靜態代碼塊
static {
靜態代碼。。
}
特點:隨着類的加載而加載,且只執行一次,並且優於主函數
用於給類初始化的
具體的一個使用實例!!!!
<span style="font-size:14px;"> class StaticCode { static { System.out.print("a") ; } } class StaticCodeDemo { static { System.out.print("b"); } public static void main(String[] args) { new StaticCode(); new StaticCode(); //當類加載時,靜態代碼塊只執行一次,所以此句不再執行 System.out.print("e"); } static { System.out.print("c"); } }</span>
//輸出結果是bcae
5.構造代碼塊的優先級高於構造函數
6. Person p = new Person("qiaodong",24);這句話都做了什麼事情?
1.因爲用到了Person.class,所以先尋找此class並加載
2.執行該類的靜態代碼塊,如果有的話,給此類進行初始化
3.在堆內存中開闢空間,分配內存地址
4.在堆內存中建立對象的特有屬性,並初始化
5.屬性顯示初始化
6.對對象的構造代碼塊進行初始化
7.對對象進行對應的構造函數的初始化
8.將內存地址賦給棧內存中p變量
7.設計模式:解決某一類問題最行之有效的方法
java中有23中設計模式
單例設計模式:解決一個類在內存中只有一個對象
想要保證對象唯一。
1.先禁止其他程序建立該類對象
2.還爲了讓其他程序可以訪問到該類對象,只好在本類中自定義一個對象
3.爲了方便其他程序對自定義對象的訪問,可以對外提供一些訪問方式
這三部用代碼怎麼體現呢?
1.將構造方法私有化
2.在類中創建一個本類對象
3.提供一個方法可以訪問到該對象
對類該怎麼描述就怎麼描述,只是再加上以上3部條件
/* 單例模式
這個是先初始化對象
稱爲:餓漢式-------開發一般常用!!!!!
Single一進內存,就已經創建好了對象
*/
<span style="font-size:14px;"> class Single { private int number = 0; //禁止外部程序創建該類的對象 private Single(){} //自己本類中創建一個對象 private static Single s = new Single(); //提供一個外部類能獲得本類對象的方法 public static Single getInstance() { return s; } public void setNumber(int n) { this.number = n; } public int getNumber() { return number; } } class TestSingle { public static void main(String[] args) { Single s1 = Single.getInstance(); s1.setNumber(23); Single s2 = Single.getInstance(); System.out.println(s2.getNumber()); } } </span>
/* 懶漢式
對象是方法被調用時,才初始化。也叫做對象的延遲加載
Single進內存,對象還沒創建,只有調用了getInstance方法,才建立對象
private Single() {}
private static Single s = null;
public static Single getInstance() {
if(s == null) {
s = new Single();
return s;
}
*/