1. ClassAndObjectTest的调试结果:
2.ObjectEquals的调试结果:
3.TestStaticInitializeBlock的调试结果:
静态初始化块只执行一次;创建子类型的对象时,也会导致父类型的静态初始化块的执行。
4.StrangeIntegerBehavior的调试结果
5.“进行实验”
package demo;
class InitializeBlockClass{
{
field = 200;
}
public int field = 100;
public InitializeBlockClass(int value) {
this.field = value;
}
public InitializeBlockClass() {
}
public static void main(String[] args) {
// TODO 自动生成的方法存根
InitializeBlockClass obj = new InitializeBlockClass();
System.out.println(obj.field);
obj = new InitializeBlockClass(300);
System.out.println(obj.field);
}
}
{
field = 200;
}
public int field = 100;
public InitializeBlockClass(int value) {
this.field = value;
}
public InitializeBlockClass() {
}
public static void main(String[] args) {
// TODO 自动生成的方法存根
InitializeBlockClass obj = new InitializeBlockClass();
System.out.println(obj.field);
obj = new InitializeBlockClass(300);
System.out.println(obj.field);
}
}
![](https://img2020.cnblogs.com/blog/2090331/202010/2090331-20201011164400731-1065585619.png)
Java字段初始化的规律:
执行类成员定义时指定的默认值或类的初始化块,到底执行哪一个要看哪一个“排在前面”
执行类的构造函数
6.静态方法中只允许访问静态数据,那么,如何在静态方法中访问类的实例成员(即没有附加static关键字的字段或方法)?(PPT P42页)
public class Test {
static int n = 200; //静态变量
public static void main(String[] args) {
New e = new New();
n = e.Shi(); //将实例变量赋值给静态变量
New.Jing(n);
}
}
class New{
int m = 100; //实例变量
int Shi(){
int x;
x = m;
return x;//实例函数,返回一个实例值
}
static void Jing(int x){
System.out.println(x); //输出静态变量
}
}