动手动脑

以下代码为何无法通过编译?哪儿出错了?

两个构造方法一个有参,一个无参。

执行以下代码,出现的结果是什么?

结果:100,300;

java字段初始化规律:

当类中有初始化块时,如果调用无参数的构造函数,则按照程序的顺序逐一调用函数,后边的函数可替换前面的。若调用的是有参的构造函数,则输出的是赋的初值。

请运行TestStaticInitializeBlock.java示例,观察输出结果,总结出“静态初始化块的执行顺序”。

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

静态方法中只允许访问静态数据,那么,如何在静态方法中访问类的实例成员(即没有附加static关键字的字段或方法)?

public class Jingtai {

public  int num;

 static void change(Jingtai a)

 {

 a.num=10;

 }

public static void main(String[] args)

{

Jingtai b=new Jingtai();

b.num=100;

b.change(b);

System.out.println(b.num);

 

}

 

}

结果:5

一般静态方法是不能访问类的非静态成员函数以及非静态的变量,因为类里边的静态成员属于类,不用声明类的对象时,静态成员就已经存在了,而非静态成员必须在声明类的对象后才可以分配内存空间,所以类的对象不可以访问类中静态成员。如果先要在静态成原函数中调用非静态中的变量或方法,可以在静态成员函数中声明一个类的对象,然后再调用类的非静态成员或方法。

 

posted @ 2017-10-20 13:24  劫殇  阅读(93)  评论(0编辑  收藏  举报