亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 10458 | 回復(fù): 6
打印 上一主題 下一主題

求這段代碼的運行結(jié)果和運行原理,看不太懂 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2013-09-23 09:27 |只看該作者 |倒序瀏覽
  1. public class Test1 {
  2.         public static int k=0;
  3.         public static  Test1 t1=new Test1("t1");
  4.         public static  Test1 t2=new Test1("t2");
  5.         public static int i=print("i");
  6.         public static int n=99;
  7.         public int j=print("j");
  8.         {
  9.                 print("構(gòu)造塊");
  10.         }
  11.         static{
  12.                 print("靜態(tài)塊");
  13.         }
  14.         public Test1(String str){
  15.                 System.out.println((++k)+":"+str+"   i="+i+"  n="+n);
  16.                 ++i;
  17.                 ++n;
  18.         }
  19.         public static int print(String str){
  20.                 System.out.println((++k)+":"+str+"   i="+i+"  n="+n);
  21.                 ++n;
  22.                 return ++i;
  23.         }
  24.         public static void main(String[] args) {
  25.                 Test1 t=new Test1("init");
  26.         }
  27. }
復(fù)制代碼

論壇徽章:
0
2 [報告]
發(fā)表于 2013-09-23 18:38 |只看該作者
居然沒一個人回復(fù)。。。

論壇徽章:
0
3 [報告]
發(fā)表于 2013-09-25 11:00 |只看該作者
自頂!

論壇徽章:
39
白銀圣斗士
日期:2015-11-24 10:40:40酉雞
日期:2015-03-20 14:15:44寅虎
日期:2015-03-20 14:13:59午馬
日期:2015-03-20 14:13:16白羊座
日期:2015-03-20 14:12:54金牛座
日期:2015-03-20 14:12:09雙子座
日期:2015-03-20 14:11:57巨蟹座
日期:2015-03-20 14:11:44獅子座
日期:2015-03-20 14:11:29亥豬
日期:2015-03-20 14:16:24戌狗
日期:2015-03-20 14:16:40申猴
日期:2015-03-20 14:17:05
4 [報告]
發(fā)表于 2013-09-25 21:53 |只看該作者
這里說的是構(gòu)造函數(shù)\變量初始化和靜態(tài)塊的關(guān)系,你可以看java思想這本書
不過你這題好繞啊...
關(guān)鍵是搞清楚,變量初始化和靜態(tài)快組合成靜態(tài)快的規(guī)則,其他他們是按書寫的規(guī)則順序而下的
所以你上面的代碼整理下,等價下面的代碼:
  1. public class Test1 {

  2.     public static int i;
  3.     public static int k;
  4.     public static int n;
  5.     public static int t1;
  6.     public static int t2;

  7.     static {
  8.         k = 0;
  9.         t1 = new Test1("t1");
  10.         t2 = new Test1("t2");
  11.         i = print("i");
  12.         n = 99;
  13.         print("靜態(tài)塊");
  14.     }
  15.    
  16.     public Test1(String str){
  17.             j = print("j");
  18.             print("構(gòu)造塊");
  19.             System.out.println((++k)+":"+str+"   i="+i+"  n="+n);
  20.             ++i;
  21.             ++n;
  22.     }
  23.     public static int print(String str){
  24.             System.out.println((++k)+":"+str+"   i="+i+"  n="+n);
  25.             ++n;
  26.             return ++i;
  27.     }
  28.     public static void main(String[] args) {
  29.             Test1 t=new Test1("init");
  30.     }
  31. }
復(fù)制代碼
至于結(jié)果我就不猜了.里面還涉及參數(shù)默認值的問題

論壇徽章:
0
5 [報告]
發(fā)表于 2013-09-26 20:59 |只看該作者
回復(fù) 4# rover12421
運行結(jié)果是
  1. 1:j   i=0  n=0
  2. 2:構(gòu)造塊   i=1  n=1
  3. 3:t1   i=2  n=2
  4. 4:j   i=3  n=3
  5. 5:構(gòu)造塊   i=4  n=4
  6. 6:t2   i=5  n=5
  7. 7:i   i=6  n=6
  8. 8:靜態(tài)塊   i=7  n=99
  9. 9:j   i=8  n=100
  10. 10:構(gòu)造塊   i=9  n=101
  11. 11:init   i=10  n=102
復(fù)制代碼
不懂。。。

論壇徽章:
39
白銀圣斗士
日期:2015-11-24 10:40:40酉雞
日期:2015-03-20 14:15:44寅虎
日期:2015-03-20 14:13:59午馬
日期:2015-03-20 14:13:16白羊座
日期:2015-03-20 14:12:54金牛座
日期:2015-03-20 14:12:09雙子座
日期:2015-03-20 14:11:57巨蟹座
日期:2015-03-20 14:11:44獅子座
日期:2015-03-20 14:11:29亥豬
日期:2015-03-20 14:16:24戌狗
日期:2015-03-20 14:16:40申猴
日期:2015-03-20 14:17:05
6 [報告]
發(fā)表于 2013-09-26 23:33 |只看該作者
回復(fù) 5# laoliuya

等價代碼其實已經(jīng)差不多能說明了.
下面我話個圖再簡單說下吧


   
第一次new Test,會進入static塊,以后都不會進入了,所以main中new Test("init")是先執(zhí)行static中的代碼(紅色框框里的)再回到new Test(String str)執(zhí)行.大步驟就是兩步.1-->6
其中1我又劃分了2-->3-->4-->5,四個步驟.

先說下n,第一次使用n,是是從2進入到Test1方法,再進入print("j"),這個時候n只聲明了,并沒賦值,所以他的默認值是0.也就是一次打印是n的值為0.
然后在執(zhí)行完2-->3之后,在第4步設(shè)置成了99.所以從這個時候開始,n才從99開始,也就是下一次的print("靜態(tài)塊")里的n是99

其他的感覺沒啥要說的了.

論壇徽章:
0
7 [報告]
發(fā)表于 2013-09-27 16:13 |只看該作者
回復(fù) 6# rover12421


    看了半天,終于看明白了,謝謝
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP