以下代码为何无法通过编译?哪儿出错了?
两个构造方法一个有参,一个无参。
执行以下代码,出现的结果是什么?
结果: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
一般静态方法是不能访问类的非静态成员函数以及非静态的变量,因为类里边的静态成员属于类,不用声明类的对象时,静态成员就已经存在了,而非静态成员必须在声明类的对象后才可以分配内存空间,所以类的对象不可以访问类中静态成员。如果先要在静态成原函数中调用非静态中的变量或方法,可以在静态成员函数中声明一个类的对象,然后再调用类的非静态成员或方法。