Topic: ****一种看不懂的Java语法 |
Print this page |
1.****一种看不懂的Java语法 | Copy to clipboard |
Posted by: KevinTian Posted on: 2004-12-14 13:38 小弟看到一种看不太懂的语法 class Test { { System.out.println("X"); }//这对括号一定要,否则编译不过 } 我测试了一下 public class Main { static { System.out.println("y"); } { System.out.println("x"); } public Main() { System.out.println("z"); } public static void main(String argv[]) { Main m=new Main(); } } 运行结果是 y x z 如果把main函数改一下 public class Main { static { System.out.println("y"); } { System.out.println("x"); } public Main() { System.out.println("z"); } public static void main(String argv[]) { Main m1=new Main(); Main m2=new Main(); } } 运行结果是 y x z x z 也就是 { System.out.println("x"); } 是在构造函数之后运行的,而且是每构造一个实例时都会运行 那位大虾能否解释一下这种语法 怎么以前没见过 也没有见哪本书上讲过啊 |
2.Re:****一种看不懂的Java语法 [Re: KevinTian] | Copy to clipboard |
Posted by: think Posted on: 2004-12-14 14:13 static{}是静态变量/类变量的构造块,包含一组类变量的初始化; {}是实例变量的构造块,包含一组实例变量的初始化。 它们执行的先后顺序是: 静态变量(加载类时) -> 实例变量(类实例化时) -> 构造函数(类实例化时) 超类初始化 -> 子类初始化。 |
3.Re:****一种看不懂的Java语法 [Re: KevinTian] | Copy to clipboard |
Posted by: KevinTian Posted on: 2004-12-14 14:28 这种语法和构造函数有什么不同呢? |
4.Re:****一种看不懂的Java语法 [Re: KevinTian] | Copy to clipboard |
Posted by: zerol Posted on: 2004-12-14 23:46 KevinTian wrote: Initialization block can be used in anonymous inner class in which there is no constructor. |
5.Re:****一种看不懂的Java语法 [Re: zerol] | Copy to clipboard |
Posted by: KevinTian Posted on: 2004-12-15 08:10 Thanks |
6.Re:****一种看不懂的Java语法 [Re: KevinTian] | Copy to clipboard |
Posted by: jigsaw Posted on: 2004-12-15 18:10 好像。。通货膨胀之后加分变得容易些了哈。。。哈哈。。。 |
7.Re:****一种看不懂的Java语法 [Re: jigsaw] | Copy to clipboard |
Posted by: KevinTian Posted on: 2004-12-15 18:41 jigsaw wrote: 什么意思啊?????? |
8.Re:****一种看不懂的Java语法 [Re: KevinTian] | Copy to clipboard |
Posted by: tool Posted on: 2004-12-31 07:40
也许上面的代码更容易理解,{}里面的代码编译后是放在Contructor里的。java里之所以允许这么写,是由于可能存在多个Contructor,你不必每个Contructor里都写同样的代码。 |
9.Re:****一种看不懂的Java语法 [Re: KevinTian] | Copy to clipboard |
Posted by: sailor Posted on: 2005-01-04 16:35 static { System.out.println("y"); }//该块被static修饰,与静态变量相似只在类加载时被执行 { System.out.println("x"); }//该块为普通块。固每一个该类的实例实例化时都执行一次! |
Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1 客服电话 18559299278 客服信箱 714923@qq.com 客服QQ 714923 |