java课堂 动手动脑3

时间:2023-03-08 18:51:39

(1)

java课堂 动手动脑3

该函数没有赋初值再就是如果类提供一个自定义的构造方法,将导致系统不在提供默认的构造方法。

(2)

public class test

{

public static void main(String[] args)

{

// TODO Auto-generated method stub

InitializeBlockClass obj=new InitializeBlockClass();

System.out.println(obj.field);

obj=new InitializeBlockClass(300);

System.out.println(obj.field);

}

}

class InitializeBlockClass

{

{field=200;}

public int field=100;

public InitializeBlockClass(int value){this.field=value;}

public InitializeBlockClass(){}

}

java字段的所有类的变量都默认初始化为null,比如String a; Integer b;

数字类的原始数据类型默认初始化为0,比如int a; short b; char c;

boolean默认初始化为false。执行类成员定义时指定的默认值或类的初始化模块到底执行那一个,要看哪一个在排在前面

2,:执行类的构造函数

3:类的初始化块不接受任何的参数,而且只要一创见类的对象,它们就会被执行。因此,适合于封装那些“对象创建时必须执行的代码”

静态初始化模块的执行顺序:

答:静态初始化块只能执行一次,创建子类对象时也导致父类型的静态初始化块也执行一次。

(3)静态方法中访问类的实例成员

例子:

public class ButtonFactory

{

private static ButtonFactory _instance = null;

public static  ButtonFactory getInstance()

{

if(null == _instance)

_instance = new ButtonFactory();

return _instance;

}

}

使用类的静态类和构造函数,我们可以跟踪某个类所创建的个数。请写一个类在任何时候都可以查询自己已经创建了多少对象

实例:

public class Objictnumber

{

int number;

public Objictnumber()

{

++number;

System.out.println("目前创建了"+number+"个对象");

}

public static void main(String[]args)

{

@SuppressWarnings("unused")

Objictnumber obj=new Objictnumber();

}

}