(1)java
該函數沒有賦初值再就是若是類提供一個自定義的構造方法,將致使系統不在提供默認的構造方法。函數
(2)this
public class test spa
{對象
public static void main(String[] args) blog
{get
// TODO Auto-generated method stubit
InitializeBlockClass obj=new InitializeBlockClass();class
System.out.println(obj.field);test
obj=new InitializeBlockClass(300);
System.out.println(obj.field);
}
}
class InitializeBlockClass
{
{field=200;}
public int field=100;
public InitializeBlockClass(int value){this.field=value;}
public InitializeBlockClass(){}
}
java字段的全部類的變量都默認初始化爲null,好比String a; Integer b;
數字類的原始數據類型默認初始化爲0,好比int a; short b; char c;
boolean默認初始化爲false。執行類成員定義時指定的默認值或類的初始化模塊到底執行那一個,要看哪個在排在前面
2,:執行類的構造函數
3:類的初始化塊不接受任何的參數,並且只要一創見類的對象,它們就會被執行。所以,適合於封裝那些「對象建立時必須執行的代碼」
靜態初始化模塊的執行順序:
答:靜態初始化塊只能執行一次,建立子類對象時也致使父類型的靜態初始化塊也執行一次。
(3)靜態方法中訪問類的實例成員
例子:
public class ButtonFactory
{
private static ButtonFactory _instance = null;
public static ButtonFactory getInstance()
{
if(null == _instance)
_instance = new ButtonFactory();
return _instance;
}
}
使用類的靜態類和構造函數,咱們能夠跟蹤某個類所建立的個數。請寫一個類在任什麼時候候均可以查詢本身已經建立了多少對象
實例:
public class Objictnumber
{
int number;
public Objictnumber()
{
++number;
System.out.println("目前建立了"+number+"個對象");
}
public static void main(String[]args)
{
@SuppressWarnings("unused")
Objictnumber obj=new Objictnumber();
}
}