标签:自动 exti explicit string 静态块 public bool marker ext
static 初始化
static 成员初始化顺序
package object;
class Bowl {
Bowl(int marker)
{
System.out.printf("Bowl("+marker+")\n");
}
void f1(int marker)
{
System.out.printf("f1("+marker+")\n");
}
}
class Table{
static Bowl bowl1 =new Bowl(1);
Table()
{
System.out.println("table()");
}
void f2(int marker)
{
System.out.println("f2("+marker+")");
}
static Bowl bowl2 = new Bowl(2);
}
class Cupboard
{
Bowl bowl3 = new Bowl(3);
static Bowl bowl4 = new Bowl(4);
Cupboard()
{
System.out.print("Cupboard\n");
bowl4.f1(2);
}
void f3(int marker)
{
System.out.println("f3("+marker+")");
}
static Bowl bowl5 = new Bowl(5);
}
public class StaticInitialization{
public static void main(String args[])
{
System.out.println("Creating new Cupboard() in main");
new Cupboard(); //静态成员只有在第一个Cupboard在创建时才会初始化,此后,静态成员不会再次初始化
System.out.println("Creating new Cupboard() in main");
Cupboard cupboard = new Cupboard();
new Table().f2(1);
new Cupboard().f3(1);
}
}/* output:
Creating new Cupboard() in main
Bowl(4)
Bowl(5)
Bowl(3)
Cupboard
f1(2)
Creating new Cupboard() in main
Bowl(3)
Cupboard
f1(2)
Bowl(1)
Bowl(2)
table()
f2(1)
Bowl(3)
Cupboard
f1(2)
f3(1)
*///~
显示的初始化静态方法
package object;
//: initialization/ExplicitStatic.java
import static net.mindview.util.Print.*;
class Cup
{
Cup(int marker)
{
print("Cup("+ marker +")");
}
void f(int marker)
{
print("f("+marker+")");
}
}
class Cups
{
static Cup cup1;
static Cup cup2; //静态域
static{
cup1 = new Cup(1);
cup2 = new Cup(2);
} //静态块
Cups()
{
print("Cups()");
}
}
public class ExplicitStatic{
public static void main(String args[])
{
print("Inside main()");
Cups.cup1.f(99); // (1) 无论时通过(1)还是注释掉(1)运行(2),Cups的静态初始化都会执行
// 静态初始化只会执行一次,如果(1)(2)全部注释掉则不会执行初始化
}
//static Cups cups1 = new Cups(); //(2)
//static Cups cups2 = new Cups(); //(2)
}/* output:
Inside main()
Cup(1)
Cup(2)
f(99)
*///~
非静态实例的初始化
package object; import static net.mindview.util.Print.*; class Mug { Mug(int marker) { print("mug("+ marker + ")"); } void f( int marker) { print("f("+marker +")"); } } public class Mugs{ Mug mug1; Mug mug2; { mug1 = new Mug(1); mug2 = new Mug(2); print("mug1 & mug2 initialized"); } //实例初始化子句是再构造器之前执行的 Mugs() { print("MUgs()"); } Mugs(int i){ print("Mugs(int)"); } public static void main(String args[]) { print("Instde main()"); new Mugs(); print("new Musg() cmopleted"); new Mugs(1); print("new Mugs(1) completed"); } }/* output: Instde main() mug(1) mug(2) mug1 & mug2 initialized MUgs() new Musg() cmopleted mug(1) mug(2) mug1 & mug2 initialized Mugs(int) new Mugs(1) completed *///~
数组的初始化
package object; import static net.mindview.util.Print.*; import java.util.*; public class ArrayNew{ public static void main(String args[]){ int [] a; Random rand = new Random(47); a = new int[rand.nextInt(20)]; print("length of a = " + a.length); print(Arrays.toString(a)); //Arrays.toString 产生一维数组的打印版本 } }/* output: length of a = 18 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]//数组元素会自动初始化为空值(对于数字和字符就是0,对于boolean是false) *///~
标签:自动 exti explicit string 静态块 public bool marker ext
原文地址:https://www.cnblogs.com/jiangfeilong/p/10084526.html