java 实例变量初始化_java学习之实例变量初始化
實例變量的初始化方法
第一種:通過構造函數進行初始化。
第二種:通過聲明實例字段初始化。
第三種:通過對象代碼塊初始化。
通過構造函數進行初始化方法
通過構造函數進行對象初始化,必須在類中聲明一個帶參數的構造函數。從而通過類創建實例的同時對實例變量進行初始化。注:如果沒有聲明帶參數的構造函數,調用默認構造函數,默認構造函數也對實例變量進行了默認初始化。例如:
1 packagecom.java.test;2
3
4
5 classProduct {6 private intid;7 privateString name;8
9 publicProduct() {10
11 }12
13 public Product(intid, String name) {14 this.id =id;15 this.name =name;16 }17 publicString toString()18 {19 return id+","+name;20 }21
22 public voidprint()23 {24 System.out.println(toString());25 }26 }27
28 public classTestProduct29 {30 public static voidmain(String[]args)31 {32 Product c=newProduct();33 c.print();34 //結果是0,null
35 Product s=new Product(10,"apple");36 s.print();37 //結果是10,apple
38
39 }40 }
通過聲明實例字段進行初始化方法
通過實例變量聲明實例變量就是在創建類的時候,對實例變量進行初始化。例如:
1 classSomeClass2 {3 static booleanb;4 static byteby;5 static charc;6 static doubled;7 static floatf;8 static inti;9 static longl;10 static shorts;11 staticString st;12 }
初始化結果為
false
0\u00000.0
0.0
0
0
0
null
通過對象代碼塊進行初始化方法
對象代碼塊初始化是在類中聲明代碼塊來進行聲明實例變量。對象代碼塊的執行是在對象執行構造函數前執行。對象代碼塊前沒有static關鍵字,加static關鍵字就變為類代碼塊。下面通過一個例子來說明:
1 packagetest;2
3
4
5 classProduct {6 private intid;7 privateString name;8
9 publicProduct() {10
11 }12
13 public Product(intid, String name) {14 this.id =id;15 this.name =name;16 }17 publicString toString()18 {19 return id+","+name;20 }21 {
22 name="Sharplee";
23 }24 public voidprint()25 {26 System.out.println(toString());27 }28
29 {
30 System.out.println("id is "+id);
31 System.out.println("name is "+name);
32 }33
34 }35
36 public classTestProduct37 {38 public static voidmain(String[]args)39 {40 Product c=newProduct();//id is0 name isSharplee41 c.print();//0,Sharplee42
43 Product s=new Product(10,"apple");//id is0 name isSharplee44 s.print();//10,apple45
46
47 }48 }
通過該代碼能夠看出代碼塊執行也是從上到下的順序,并且代碼塊執行是在構造函數之前。代碼塊的出現,是便于匿名類來使用的。匿名類是不創建構造函數的。因此在初始化變量的時候,可以使用代碼塊。
類代碼塊
類代碼塊就是在加載類的時候進行初始化。例如:
1 packagetest;2
3
4
5 classProduct {6 private static intprice;7 private intid;8 privateString name;9
10 publicProduct() {11
12 }13 static
14 {15 price=100;16 System.out.println("the price is:"+price);17 }18 public Product(int id, String name,intprice) {19 this.id =id;20 this.name =name;21 this.price=price;22 }23 publicString toString()24 {25 return id+","+name+","+price;26 }27 {28 name="Sharplee";29 }30 public voidprint()31 {32 System.out.println(toString());33 }34
35 {36 System.out.println("id is "+id);37 System.out.println("name is "+name);38 System.out.println(price);39 }40
41 }42
43 public classTestProduct44 {45 public static voidmain(String[]args)46 {47 Product c=newProduct();48 c.print();49
50 Product s=new Product(10,"apple",300);51 s.print();52
53
54
55 }56 }
類代碼塊以及塊代碼塊的區別
類代碼塊無論創建多少個對象都只初始化一次,而對象代碼塊在創建的對象的時候都執行。
類代碼塊初始化必須在前面加關鍵字static,而對象代碼塊則不用加。
類代碼塊只能使用類變量進行初始化以及在代碼塊中聲明變量,而對象代碼塊則沒有限制。
1 packagetest;2
3
4
5 classProduct {6 private static intprice;7 private intid;8 privateString name;9
10 publicProduct() {11
12 }13 static
14 {15 、16 price=100;17 System.out.println("the price is:"+price);18 }19 static
20 {21 price++;22 }23
24 public Product(int id, String name,intprice) {25 this.id =id;26 this.name =name;27 this.price=price;28 }29 publicString toString()30 {31 return id+","+name+","+price;32 }33 {34 name="Sharplee";35 }36 public voidprint()37 {38 System.out.println(toString());39 }40
41 {42 System.out.println("id is "+id);43 System.out.println("name is "+name);44 System.out.println(price);45 }46
47 }48
49 public classTestProduct50 {51 public static voidmain(String[]args)52 {53 Product p=null;54 Product t=newProduct();55 Product c=newProduct();56
57
58 }59 }
View Code
1 packagetest;2
3
4
5 classProduct {6 private static intprice;7 private intid;8 privateString name;9
10 publicProduct() {11
12 }13 static
14 {15 int ss=10;16 price=100;17 System.out.println("the price is:"+price);18 }19
20 {21 price++;22 }23
24 public Product(int id, String name,intprice) {25 this.id =id;26 this.name =name;27 this.price=price;28 }29 publicString toString()30 {31 return id+","+name+","+price;32 }33 {34 name="Sharplee";35 }36 public voidprint()37 {38 System.out.println(toString());39 }40
41 {42 System.out.println("id is "+id);43 System.out.println("name is "+name);44 System.out.println(price);45 }46
47 }48
49 public classTestProduct50 {51 public static voidmain(String[]args)52 {53 Product p=null;54 Product t=newProduct();55 Product c=newProduct();56
57
58 }59 }
View Code
對象創建的執行順序
總結:對象創建首先進行類實例變量以及類代碼塊的初始化。接著是類的父類的對象代碼塊執行,類的父類構造函數執行,最后執行類中代碼塊以及類的構造函數。
總結
以上是生活随笔為你收集整理的java 实例变量初始化_java学习之实例变量初始化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java jfreechart下载_jf
- 下一篇: java string转enum_jav