Java 静态块未在构造函数之前执行
我被困在一个问题里。有三门课 1.教师 2.教师 3.教师课堂 我正在制作一个教师课堂的静态对象Java 静态块未在构造函数之前执行,java,Java,我被困在一个问题里。有三门课 1.教师 2.教师 3.教师课堂 我正在制作一个教师课堂的静态对象公共静态教师t 当我在TeacherClass中创建4个TeacherEx对象时,TeacherEx中的静态块只执行一次,而必须执行4次。 谁能解释一下到底是什么问题吗 发布所有3个类 教师班 public class Teacher { public static String name; public static String subject; public static
公共静态教师t
当我在TeacherClass
中创建4个TeacherEx
对象时,TeacherEx
中的静态块只执行一次,而必须执行4次。
谁能解释一下到底是什么问题吗
发布所有3个类
教师班
public class Teacher {
public static String name;
public static String subject;
public static int nolec;
}
public static class TeacherEx {
public int noStd;
public String place;
public static Teacher t;
public TeacherEx(int no, String p)
{
noStd=no;
place=p;
t.name="prashantha";
t.subject="Java_classes";
t.nolec++;
System.out.println("The nos of lec after creation class are "+t.nolec);
}
static{
if(t==null)
{
t=new Teacher();
}
else
{
System.out.println("Nothing");
}
System.out.println("The nos of lec before this class creation are "+t.nolec);
}
}
public class TeacherClass {
public static void main(String[] args)
{
TeacherEx a=new TeacherEx(45,"banglore");
TeacherEx b=new TeacherEx(75,"Mumbai");
TeacherEx c=new TeacherEx(49,"chennai");
TeacherEx d=new TeacherEx(47,"Newyork");
}
}
类的静态成员不是实例成员。这意味着它们被附加(绑定)到类本身,而不是类的实例。这里有4个
TeacherEx
类的实例,但这对静态成员并不重要。即使没有该类的任何实例,也可以访问静态
成员
你自己试试吧:
public static void main(String[] args) {
println(TeacherEx.t.toString());
}
当JVM在运行时初始化类时,将执行静态块。另一方面,在运行时执行实际实例化(
newteacherex(…)
)时,将调用构造函数 没问题。静态块在类最初加载时执行,只发生一次。如果您希望在对象实例化时执行代码,请将其放入构造函数中。或者。。。换句话说。。。问题是1)你不了解静态和静态初始化是如何工作的,2)你可能根本不应该在这里使用静态。我知道静态概念。我尝试了所有可能的静态方法抱歉。不。如果你认为(不知何故)一个静态
初始化会运行不止一次,你就不明白静态
。非常感谢@Nader Hadji Ghanbari