国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
嬰兒的出生為你解惑構(gòu)造函數(shù)和構(gòu)造代碼塊

腳本之家

你與百萬開發(fā)者在一起

序言:         

今天回想這幾天走過的Java路程,發(fā)現(xiàn)漏了一個點,就是構(gòu)造代碼塊,我絞盡腦汁,也沒想起來它的作用,我騙不了我自己,就搜相關(guān)資料,重新學習,在學習的過程中發(fā)現(xiàn)構(gòu)造代碼塊和構(gòu)造函數(shù)有一定的聯(lián)系,為了捕捉這種聯(lián)系,我總結(jié)了一個案例,這個案例能加深你對構(gòu)造函數(shù)和構(gòu)造代碼塊的理解。我寫這個博客一是為了避免下次再被構(gòu)造代碼塊這塊石頭絆倒,二是為了能給需要解惑的人提供一些幫助,還是那句話:

越懂得與人分享,你的價值增值越大!

看代碼前要先明白一個需求:

使用Java類描述一個嬰兒,假設(shè)現(xiàn)在兩種嬰兒,一種嬰兒是一出生就有了名字,我們把這種嬰兒叫白戶,另一種嬰兒是出生后才有了名字,我們把這種嬰兒叫黑戶。(為了方便理解,我把剛出生就已經(jīng)有名字的叫白戶,把出生后才起名的叫黑戶

  1. //嬰兒類public class Baby {

  2.     int id;//身份證

  3.     String name;//名字

  4.     //哭

  5.     public void cry(){

  6.         System.out.println(name+'哇哇的哭。。。。');

  7.     }

  8. }

  9. class Test{

  10.     public static void main(String[] args) {

  11.         //創(chuàng)建一個baby對象

  12.         Baby baby = new Baby();//嬰兒出生

  13.         baby.id=111;

  14.         baby.name='小娃娃';//黑戶

  15.         baby.cry();

  16.     }

  17. }

運行結(jié)果:  

小娃娃哇哇的哭。。。。

由于小娃娃是出生之后才賦的值,所以小娃娃是黑戶,我們現(xiàn)在要讓嬰兒一出生就有名字,就要用構(gòu)造函數(shù)。

構(gòu)造函數(shù)的作用:    給對應(yīng)的對象進行初始化

構(gòu)造函數(shù)定義的格式:

  1. 修飾符 函數(shù)名(形式參數(shù)){

  2.      函數(shù)體。。。

  3. }

構(gòu)造函數(shù)要注意的細節(jié):

1.構(gòu)造函數(shù)沒有返回值類型

2.構(gòu)造函數(shù)的函數(shù)名必須要與類名一致

3.構(gòu)造函數(shù)并不是由我們手動調(diào)用的,而是在創(chuàng)建對應(yīng)的對象時,jvm就會主動調(diào)用到對應(yīng)的構(gòu)造函數(shù)

4.如果一個類沒有顯式的寫上一個構(gòu)造方法時,Java編譯器會為該類添加一個無參的構(gòu)造方法

5.如果一個類已經(jīng)顯示的寫上一個構(gòu)造方法時,Java編譯器不會再為該類添加無參的構(gòu)造方法

6.構(gòu)造函數(shù)是可以在一個類中以函數(shù)重載的形式存在多個的

  1. //嬰兒類

  2. public class Baby {

  3.     int id;//身份證

  4.     String name;//名字

  5.     //無參構(gòu)造函數(shù)

  6.     public  Baby(){

  7.     }

  8.     //有參構(gòu)造函數(shù)

  9.     public Baby(int id, String name) {

  10.         this.id = id;

  11.         this.name = name;

  12.         System.out.println('Baby的屬性初始化完畢?。?!');

  13.     }

  14.     //哭

  15.     public void cry(){

  16.         System.out.println(this.name+'哇哇的哭。。。。');

  17.     }

  18. }

  19. class Test{

  20.     public static void main(String[] args) {

  21.         //創(chuàng)建一個baby對象

  22.         Baby baby = new Baby(222,'小可愛');//嬰兒出生    白戶

  23.         baby.cry();

  24.     }

  25. }

運行結(jié)果:

Baby的屬性初始化完畢?。?!

小可愛哇哇的哭。。。。

通過上面的黑戶和白戶,我們能對構(gòu)造函數(shù)有個深刻的理解,下面我再引申出構(gòu)造代碼塊,依舊是這個例子,但是需求變了,現(xiàn)在的需求是嬰兒一出生就必須哭,可能說到這,要是有人理解了上面的代碼,肯定馬上就能想到,這還不簡單,把哭的方法寫到構(gòu)造函數(shù)中不就行了,對,這樣確實也可以,但是有弊端,Java要求代碼簡練,能少寫的就不多寫,你先看下面的代碼就知道了

  1. //嬰兒類

  2. public class Baby {

  3.     int id;//身份證

  4.     String name;//名字

  5.     //無參構(gòu)造函數(shù)

  6.     public  Baby(){

  7.         cry();

  8.     }

  9.     //有參構(gòu)造函數(shù)

  10.     public Baby(int id, String name) {

  11.         this.id = id;

  12.         this.name = name;

  13.         cry();

  14.     }

  15.     //哭

  16.     public void cry(){

  17.         System.out.println('哇哇的哭。。。。');

  18.     }

  19. }

  20. class Test{

  21.     public static void main(String[] args) {

  22.         //創(chuàng)建一個白戶baby對象

  23.         Baby baby = new Baby(222,'小可愛');//白戶

  24.         //創(chuàng)建一個黑戶baby對象

  25.         Baby baby1 = new Baby();//黑戶

  26.     }

  27. }

運行結(jié)果:

哇哇的哭。。。。

哇哇的哭。。。。

雖然白戶黑戶兩種嬰兒都在出生的時候哭了,但是在兩個構(gòu)造函數(shù)中出現(xiàn)了重復(fù)代碼,cry()方法重復(fù)了兩次,為了解決重復(fù)代碼這個問題,下面就讓構(gòu)造代碼塊出場吧!

構(gòu)造函數(shù)的作用:給對應(yīng)的對象進行初始化

構(gòu)造代碼塊的作用:  給對象進行統(tǒng)一的初始化

構(gòu)造代碼塊的格式:

  1. {

  2.     構(gòu)造代碼塊

  3. }

注意:構(gòu)造代碼塊的大括號必須位于成員位置上

代碼塊的類別:

1.構(gòu)造代碼塊

2.局部代碼塊        大括號位于方法之內(nèi)       作用:縮短局部變量的生命周期,節(jié)省一點點內(nèi)存

3.靜態(tài)代碼塊

  1. static{

  2.      靜態(tài)代碼塊

  3. }

構(gòu)造代碼塊要注意的事項:

1.Java編譯器編譯一個Java源文件的時候,會把成員變量的聲明語句提前至一個類的最前端

2.成員變量的初始化工作其實都是在構(gòu)造函數(shù)中進行的

3.一旦經(jīng)過Java編譯器編譯后,構(gòu)造代碼塊的代碼就會被移動到構(gòu)造函數(shù)中執(zhí)行,是在構(gòu)造函數(shù)之前執(zhí)行的,構(gòu)造函數(shù)中的代碼是最后執(zhí)行的

4.成員變量的顯式初始化與構(gòu)造代碼塊的代碼是按照當前代碼的順序執(zhí)行的

  1. //嬰兒類

  2. public class Baby {

  3.     int id;//身份證

  4.     String name;//名字

  5.     //構(gòu)造代碼塊

  6.     {

  7.         cry();

  8.     }

  9.     //無參構(gòu)造函數(shù)

  10.     public  Baby(){

  11.     }

  12.     //有參構(gòu)造函數(shù)

  13.     public Baby(int id, String name) {

  14.         this.id = id;

  15.         this.name = name;

  16.     }

  17.     //哭

  18.     public void cry(){

  19.         System.out.println('哇哇的哭。。。。');

  20.     }

  21. }

  22. class Test{

  23.     public static void main(String[] args) {

  24.         //創(chuàng)建一個白戶baby對象

  25.         Baby baby = new Baby(222,'小可愛');//白戶

  26.         //創(chuàng)建一個黑戶baby對象

  27.         Baby baby1 = new Baby();//黑戶

  28.         //匿名對象

  29.         new Baby();

  30.     }

  31. }  

運行結(jié)果:

哇哇的哭。。。。

哇哇的哭。。。。

哇哇的哭。。。。

  1. //嬰兒類

  2. public class Baby {

  3.     int id;//身份證

  4.     String name;//名字

  5.     //構(gòu)造代碼塊

  6.     {

  7.         cry();

  8.     }

  9.     //無參構(gòu)造函數(shù)

  10.     public  Baby(){

  11.     }

  12.     //有參構(gòu)造函數(shù)

  13.     public Baby(int id, String name) {

  14.         this.id = id;

  15.         this.name = name;

  16.     }

  17.     //哭

  18.     public void cry(){

  19.         System.out.println('哇哇的哭。。。。');

  20.     }

  21. }

  22. class Test{

  23.     public static void main(String[] args) {

  24.         //局部代碼塊

  25.         {

  26.             //創(chuàng)建一個白戶baby對象

  27.             Baby baby = new Baby(222,'小可愛');//白戶

  28.             //創(chuàng)建一個黑戶baby對象

  29.             Baby baby1 = new Baby();//黑戶

  30.             //匿名對象

  31.             new Baby();

  32.         }

  33.     }

  34. }

本文作者:泰斗賢若如

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
C#編碼規(guī)范
IEnumerable和IEnumerable<T>接口
Java學習之神奇的初始化
Java中類的初始化順序
StructureMap極速上手指南(翻譯)
關(guān)于構(gòu)造函數(shù),構(gòu)造代碼塊,靜態(tài)代碼塊
更多類似文章 >>
生活服務(wù)
分享 收藏 導長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服