码迷,mamicode.com
首页 > 编程语言 > 详细

Java 初始化

时间:2018-12-07 21:21:12      阅读:194      评论:0      收藏:0      [点我收藏+]

标签:自动   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)
*///~

 

Java 初始化

标签:自动   exti   explicit   string   静态块   public   bool   marker   ext   

原文地址:https://www.cnblogs.com/jiangfeilong/p/10084526.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!