java 实例变量初始化_java学习之实例变量初始化
實(shí)例變量的初始化方法
第一種:通過構(gòu)造函數(shù)進(jìn)行初始化。
第二種:通過聲明實(shí)例字段初始化。
第三種:通過對(duì)象代碼塊初始化。
通過構(gòu)造函數(shù)進(jìn)行初始化方法
通過構(gòu)造函數(shù)進(jìn)行對(duì)象初始化,必須在類中聲明一個(gè)帶參數(shù)的構(gòu)造函數(shù)。從而通過類創(chuàng)建實(shí)例的同時(shí)對(duì)實(shí)例變量進(jìn)行初始化。注:如果沒有聲明帶參數(shù)的構(gòu)造函數(shù),調(diào)用默認(rèn)構(gòu)造函數(shù),默認(rèn)構(gòu)造函數(shù)也對(duì)實(shí)例變量進(jìn)行了默認(rèn)初始化。例如:
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 //結(jié)果是0,null
35 Product s=new Product(10,"apple");36 s.print();37 //結(jié)果是10,apple
38
39 }40 }
通過聲明實(shí)例字段進(jìn)行初始化方法
通過實(shí)例變量聲明實(shí)例變量就是在創(chuàng)建類的時(shí)候,對(duì)實(shí)例變量進(jìn)行初始化。例如:
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 }
初始化結(jié)果為
false
0\u00000.0
0.0
0
0
0
null
通過對(duì)象代碼塊進(jìn)行初始化方法
對(duì)象代碼塊初始化是在類中聲明代碼塊來進(jìn)行聲明實(shí)例變量。對(duì)象代碼塊的執(zhí)行是在對(duì)象執(zhí)行構(gòu)造函數(shù)前執(zhí)行。對(duì)象代碼塊前沒有static關(guān)鍵字,加static關(guān)鍵字就變?yōu)轭惔a塊。下面通過一個(gè)例子來說明:
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 }
通過該代碼能夠看出代碼塊執(zhí)行也是從上到下的順序,并且代碼塊執(zhí)行是在構(gòu)造函數(shù)之前。代碼塊的出現(xiàn),是便于匿名類來使用的。匿名類是不創(chuàng)建構(gòu)造函數(shù)的。因此在初始化變量的時(shí)候,可以使用代碼塊。
類代碼塊
類代碼塊就是在加載類的時(shí)候進(jìn)行初始化。例如:
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 }
類代碼塊以及塊代碼塊的區(qū)別
類代碼塊無論創(chuàng)建多少個(gè)對(duì)象都只初始化一次,而對(duì)象代碼塊在創(chuàng)建的對(duì)象的時(shí)候都執(zhí)行。
類代碼塊初始化必須在前面加關(guān)鍵字static,而對(duì)象代碼塊則不用加。
類代碼塊只能使用類變量進(jìn)行初始化以及在代碼塊中聲明變量,而對(duì)象代碼塊則沒有限制。
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
對(duì)象創(chuàng)建的執(zhí)行順序
總結(jié):對(duì)象創(chuàng)建首先進(jìn)行類實(shí)例變量以及類代碼塊的初始化。接著是類的父類的對(duì)象代碼塊執(zhí)行,類的父類構(gòu)造函數(shù)執(zhí)行,最后執(zhí)行類中代碼塊以及類的構(gòu)造函數(shù)。
總結(jié)
以上是生活随笔為你收集整理的java 实例变量初始化_java学习之实例变量初始化的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java jfreechart下载_jf
- 下一篇: java 大文件 md5_使用Java为