当前位置: 首页 > 面试题库 >

在var的初始化过程中使用this.var

柴丰
2023-03-14
问题内容

在研究另一个问题时,我很惊讶地发现以下Java代码可以正确编译:

public class Clazz {
    int var = this.var + 1;
}

在我的JDK6中,var被初始化为1。

上面的代码是否具有定义明确的语义,或者其行为未定义?如果您说它定义明确,请引用JLS的相关部分。


问题答案:

在8.3.2.3 节的示例8.3.2.3-1中提到了它。在示例文本中

class Z {
    static int peek() { return j; }
    static int i = peek();
    static int j = 1;
}
class Test {
    public static void main(String[] args) {
        System.out.println(Z.i);
    }
}

标题说:

… i的变量初始值设定项使用peek类方法访问变量j的值,然后j被其变量初始值设定项初始化,此时它仍具有其默认值(第4.12.5节)。

这应该直接映射到您的情况。



 类似资料:
  • Rails 应用的初始化过程 本章节介绍了 Rails 4 应用启动的内部流程,适合有一定经验的Rails应用开发者阅读。 通过学习本章节,您会学到如下知识: 如何使用 rails server; Rails应用初始化的时间序列; Rails应用启动过程都用到哪些文件; Rails::Server接口的定义和使用; 本章节通过介绍一个基于Ruby on Rails框架默认配置的 Rails 4 应

  • 我正在开发一个简单的联系人应用程序,可以存储联系人的姓名、电子邮件和号码。语言:Kotlin体系结构:MVVM但我得到一个错误: 活动: 错误:

  • 我有一个类,我想用在另一个视图中设置的绑定变量初始化它。 查看- 需要使用 @Binding var $numberofNumbers 初始化的类 - init语句显然给出了一个错误,即self未初始化,而实例var用于初始化,这是不允许的。 我该如何避免这种情况?需要使用用户在第一个视图中输入的编号初始化该类。我在这里写了大概的代码,所以请忽略任何打字错误。

  • 甚至我也调用了FirebaseApp.InitializeApp(this);在很多地方 MyApplication(扩展应用程序),在活动的onCreate中调用

  • 问题内容: 当我运行此代码时: 但是我得到警告 所以我去看了看文档,但是“没有文档”。但仍然没有提到初始化向量是什么以及如何使用它。谁能启发我? 我知道我可以做更多的Google搜索工作,但是在众多搜索结果中排在首位,我认为这个问题对其他遇到此问题的人可能很有用。 问题答案: IV通常是一个随机数,可确保加密文本是唯一的。 为了解释为什么需要它,让我们假设我们有一个用密钥“秘密”而不用IV加密的人

  • 作为下一章goroutine调度的一个前序,本章先讲一些基础内容,看一看Go语言编写的程序的初始化过程。其实初始化过程中会做很多很多的事情,这里忽略大部分细节,只看一下脉络。从程序入口开始分析也是学习源代码的一个好方式。 首先,写一个hello world文件,内容如下: package main import "fmt" func main() { fmt.Println("h