大括号下的语句是否首先加载?

Codistan

我知道首先将静态内容加载到内存中,但是当我没有将其称为静态内容时,为什么在“ CT”之前打印“ IT”呢?

class Person
{
    Person()
    {
        System.out.print(" CP");
    }

    static 
    {
        System.out.print("SP");
    }
}

class Teacher extends Person
{
    Teacher()
    {
        System.out.print(" CT");
    }

    {
        System.out.print(" IT");
    }
}


public class StaticTest 
{
    public static void main(String[] args) 
    {       
        Person p = new Teacher();
    }
}
他们是

初始化程序块(例如){System.out.print(" IT");}在构造函数之前执行。实际上,它们被复制到每个构造函数的开头。

初始化实例成员

通常,您需要将代码放在构造函数中以初始化实例变量。使用构造函数初始化实例变量有两种选择:初始化块和final方法。

实例变量的初始化程序块看起来像静态初始化程序块,但没有static关键字

{
//初始化所需的任何代码都在这里
}

Java编译器将初始化程序块复制到每个构造函数中。因此,该方法可用于在多个构造函数之间共享代码块。

来源

更确切地说,这是JLS中描述的初始化顺序

  1. 将构造函数的参数分配给此构造函数调用的新创建的参数变量。

  2. 如果此构造函数以同一个类中的另一个构造函数的显式构造函数调用(第8.8.7节)开头(使用此方法),则使用这五个步骤评估参数并递归处理该构造函数调用。如果该构造函数调用突然完成,则由于相同的原因,此过程也会突然完成;否则,此过程将立即完成。否则,请继续执行步骤5。

  3. 此构造函数并不以对同一个类中的另一个构造函数的显式构造函数调用(使用此函数)开头。如果此构造函数用于Object以外的其他类,则此构造函数将以显式或隐式调用超类构造函数(使用super)开头。使用这五个相同的步骤来递归评估超类构造函数调用的参数和过程。如果该构造函数调用突然完成,则出于相同原因,此过程也会突然完成。否则,请继续执行步骤4。

  4. 执行此类的实例初始值设定项和实例变量初始值设定项,并按从左到右的顺序将实例变量初始值设定项的值分配给相应的实例变量,这些变量在文本中显示在该类的源代码中。如果执行这些初始化程序中的任何一个都会导致异常,则不会再处理其他初始化程序,并且该过程会因相同的异常而突然完成。否则,请继续执行步骤5。

  5. 执行此构造函数的其余部分。如果该执行突然完成,则出于相同原因,此过程也会突然完成。否则,此过程将正常完成。

请注意,实例构造函数在构造函数的主体(步骤5)之前在步骤4中执行。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

大括号下的语句是否首先加载?

来自分类Dev

在if语句中,大括号是否可用?

来自分类Dev

“使用”语句与大括号

来自分类Dev

If / Else语句大括号

来自分类Dev

Scala的非大括号IF语句

来自分类Dev

用大括号终止语句

来自分类Dev

Scala的非大括号IF语句

来自分类Dev

删除非大括号 if 语句的 Eclipse 缩进

来自分类Dev

if/else 语句中的大括号问题

来自分类Dev

单行功能是否需要大括号?

来自分类Dev

Busybox 中是否缺少大括号支持?

来自分类Dev

是否可以使用变量边界在不使用eval的情况下进行bash大括号扩展?

来自分类Dev

大括号中的return语句应调用什么构造函数?

来自分类Dev

在if语句旁边重新整理移动大括号。如何换行?

来自分类Dev

检查是否首先加载了AJAX检索的图像

来自分类Dev

检查表达式中的每个大括号是否都有匹配的右大括号

来自分类Dev

在这种情况下,应该使用大括号{}还是方括号[]?

来自分类Dev

JS / PHP:是否有任何方法可以在不等待窗口首先加载的情况下获取图像高度?

来自分类Dev

是否在C中首先评估最里面的括号?

来自分类常见问题

C ++ {* this}大括号内

来自分类Dev

大括号的全局顺序?

来自分类Dev

大括号PHP的问题

来自分类Dev

闭合,带大括号

来自分类Dev

大括号的Javascript使用

来自分类Dev

如何过滤大括号

来自分类Dev

Netbeans大括号格式

来自分类Dev

jQuery 中的大括号

来自分类Dev

else if & 大括号

来自分类Dev

如果语句等可以用clang格式在一行中添加大括号