静态方法可以直接通过类名调用,无需实例化类的对象。 publicclassMainClass{staticclassStaticClass{publicStaticClass(){System.out.println("StaticClass Constructor");}}publicstaticvoidmain(String[]args){StaticClassstaticObj=createStaticObj();}publicstaticStaticClasscreateStaticObj(){returnnewStaticClass();}}...
System.out.println("myclass constructor"); } } 输出结果 teststaticmyclassstaticpersonstaticperson Test testconstructorpersonMyClassmyclassconstructor 类似地,我们还是来想一下这段代码的具体执行过程。首先加载Test类,因此会执行Test类中的static块。接着执行new MyClass(),而MyClass类还没有被加载,因此需要加...
然而,Java中也存在一种特殊类型的构造函数,即静态构造函数(static constructor)。 静态构造函数的定义 静态构造函数是一个类中的静态方法,用于初始化类的静态成员变量。和普通构造函数不同的是,静态构造函数没有参数,且在类加载时自动调用,只会被执行一次。 publicclassMyClass{static{// 静态构造函数的代码}} 1. ...
System.out.println("myclass static"); } publicMyClass() { System.out.println("myclass constructor"); } } 输出结果为: 1 2 3 4 5 6 7 teststatic myclassstatic personstatic person Test test constructor person MyClass myclass constructor 为什么输出结果是这样的?我们来分析下这段代码的执行过程:...
publicclassSonextendsFather{//静态代码块static{System.out.println("Son static");}//构造方法publicSon(){System.out.println("Son constructor");}publicstaticvoidmain(String[]args){newSon();}} 看个结果 二、深入分析static关键字 上面我们只是描述了一下static关键字的基本使用场景,下面主要解析一下static...
teststaticmyclassstaticpersonstaticpersonTesttestconstructorpersonMyClassmyclassconstructor 类似地,我们还是来想一下这段代码的具体执行过程。首先加载Test类,因此会执行Test类中的static块。接着执行new MyClass(),而MyClass类还没有被加载,因此需要加载MyClass类。在加载MyClass类的时候,发现MyClass类继承自Test类,...
public class Data { private int id; public static Data() {}} 如果您尝试编译此类,则会在 Data 类型的构造函数中收到一条错误消息,作为非法修饰符。仅允许公开,受保护和私有。 静态属于类,构造函数属于对象 我们知道静态方法,静态块或变量属于该类。而构造函数属于该对象,并在使用 new 运算符创建实例时调用...
publicclassDateTest{publicstaticvoidmain(String[] args){ System.out.println("main begin");newDate(); System.out.println("main over"); } } 运行结果如下图所示: 图9-14:测试无参数构造方法 通过以上程序执行结果确实看到了“new Date()”确实调用了Date类当中的无参数构造方法。再看以下程序: ...
class StaticTest { //static关键字修饰内部类 public static class InnerClass{ InnerClass(){ ...
static{ System.out.println("classstatic");//2 publicMyClass(){ //默认super() System.out.println("classconstructor");//7 } 1.先看main方法,main方法回先加载对应的类,此时MyTest类和其静态的变量,方法和代码块会随类的加载而开辟空间。static是属于类的。所以teststatic优先执行,且此时MyTest类的其他...