首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java 7:执行顺序

Java 7:执行顺序
EN

Stack Overflow用户
提问于 2013-08-01 11:15:21
回答 4查看 168关注 0票数 2

我正在为Java 7考试学习,我正在看一些试题。我似乎不明白为什么下面的程序按x y c g顺序返回。

我理解为什么首先运行x,因为它是一个静态初始化块,但请有人解释为什么ycg之前运行。

代码语言:javascript
复制
public class Triangle {
Triangle() {
    System.out.print("c ");
}

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

public static void main(String[] args) {
    new Triangle().go();
}

void go() {
    System.out.print("g ");
}

static {
    System.out.print("x ");
}
}
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-08-01 11:16:57

代码语言:javascript
复制
{
    System.out.print("y ");
}

是一个实例初始化块,在构造函数之前运行。因此,该代码相当于:

代码语言:javascript
复制
Triangle() {
    System.out.print("y "); //initialisation block
    System.out.print("c ");
}
票数 4
EN

Stack Overflow用户

发布于 2013-08-01 11:19:31

订单将是静态块:

代码语言:javascript
复制
static {
   System.out.print("x ");
}

然后是实例初始化程序:

代码语言:javascript
复制
{
  System.out.print("y ");
}

它含蓄地:

代码语言:javascript
复制
Triangle() {
   System.out.print("y ");
   System.out.print("c ");
}

阅读:

  1. 实例初始化器
  2. 新类实例的创建
  3. Oracle教程
票数 4
EN

Stack Overflow用户

发布于 2013-08-01 11:19:52

"y“在块语句中,而不是在方法中。因此,在创建Triangle实例时,甚至在构造函数之前,都会执行块中的语句。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17992532

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档