输出:1729
知识要点:
A reference to a class field causes initialization of only the class or interface
that actually declares it, even though it might be referred to through the name of a
subclass, a subinterface, or a class that implements an interface.
也就是说只有使用该类或者接口直接定义的类变量,才会激发该类的初始化;如果使用的是其父类定义的类变量,则子类不会被初始化
输出:
1
j=3
jj=4
3
知识要点:
Initialization of an interface does not, of itself, cause initialization of any of its
superinterfaces.
The reference to J.i is to a field that is a compile-time constant; therefore, it
does not cause I to be initialized. The reference to K.j is a reference to a field
actually declared in interface J that is not a compile-time constant; this causes initialization
of the fields of interface J, but not those of its superinterface I, nor
those of interface K. Despite the fact that the name K is used to refer to field j of
interface J, interface K is not initialized.
分享到:
相关推荐
JAVA面试题解惑系列(一)——类的初始化顺序 JAVA 是一门面向对象的编程语言,类的初始化顺序是 JAVA 程序员和 JAVA 工程师面试中一个非常重要的知识点。本文将详细讲解类的初始化顺序,并提供了相关的测试代码,...
【深入Java虚拟机(三)——类的生命周期(下)类的初始化1】 类的生命周期在Java中是一个关键的概念,它涵盖了从加载到卸载的整个过程。在类的生命周期中,初始化阶段是非常重要的,因为它涉及到类的静态变量的赋值...
3. 静态块:静态初始化块用于在类加载时初始化静态变量,仅执行一次。 ```java class MyClass { static int x; static { x = 10; // 类加载时执行,初始化x } } ``` 4. 静态内部类:静态内部类不需要外部类...
综上所述,“Java版五子棋——基础”项目不仅是一个很好的Java核心编程学习案例,也为初学者提供了实践Swing GUI开发的机会。通过对该项目的学习和理解,可以帮助开发者更好地掌握面向对象编程思想以及图形用户界面...
`@PostConstruct`是Java EE规范的一部分,它用于标记一个方法,这个方法将在对象被Spring容器初始化完成后、所有依赖注入完成并且在该对象的`init()`方法之前调用。使用`@PostConstruct`注解的方法只会被调用一次,...
创建对象包括声明、实例化和初始化三方面的内容。通常的格式为 : 1. 声明对象 对象声明实际上是给对象命名,也称定义一个实例变量。对象声明的一般格式为: type name 其中,type 是一个类的类名,用它声明的对象将...
Servlet生命周期包括加载、初始化、服务、销毁四个阶段。 6. **JDBC**:Java数据库连接,提供统一的API与各种数据库交互,包括建立连接、发送SQL语句、处理结果集等。 7. **JDO**:Java数据对象,为Java应用提供了...
这是因为静态成员的初始化顺序是按照类的加载顺序进行的,即先加载父类,再加载子类。因此,父类的静态代码块在子类的静态字段初始化之前执行。 三、构造代码块与构造函数的执行顺序 构造代码块是类中的一个特殊的...
Java中的`static`关键字是一个非常重要的关键字,它用于声明类级别的成员,包括变量、方法和代码块。`static`关键字的使用有以下四个主要方面: 1. **类属性/类变量**: 类属性(也称为静态变量)是属于类本身的,...
`static`初始化块在类加载时执行,而不是在创建实例时。 4. **final**: - 使用对象:类、方法、字段、变量 - 介绍:`final`修饰符用于声明不可变的对象。当应用于类时,意味着该类不能被继承。应用于方法时,...
### JAVA面试题解惑系列——类的初始化顺序 #### 一、基础知识回顾 在Java编程中,类的初始化顺序是一个非常重要的概念,特别是在面试时,它经常被用来考察面试者对于Java类加载机制的理解程度。类的初始化顺序...
数组的初始化分为静态初始化和动态初始化。静态初始化直接在声明时赋值,如`int[] a = {1, 2, 3};`。动态初始化是在创建后逐个赋值,如`int[] a = new int[2]; a[0] = 1; a[1] = 2;`。 数组的特点包括: 1. 长度...
《JAVA面试题解惑系列——类的初始化顺序》 在Java编程中,理解类的初始化顺序是面试中常见的考察点,因为它直接关系到程序的执行逻辑。本文将深入探讨类的初始化过程,以及在继承场景下如何理解这个过程。 首先,...
### Java面试题解惑系列——类的初始化顺序 在Java面试过程中,经常会出现关于类的初始化顺序的问题。这类问题通常涉及静态与非静态成员变量、静态初始化块、非静态初始化块以及构造函数的执行顺序。下面我们将深入...
`Car`类的`main`方法创建了一个`Engine`实例,并在`go()`方法中初始化。这样,当`Engine`实例被创建时,其构造器会调用`drive()`,输出"hi"。 4. 抽象类与继承: 抽象类`Student`包含了一些基本的学生信息,如姓名...
### Java面试题解惑系列——类的初始化顺序详解 #### 背景介绍 在Java面试过程中,关于类的初始化顺序的问题是常见的考察点之一。此类问题通常涉及到类的加载机制、静态变量与实例变量的区别、初始化块的作用及执行...
- **变量声明与初始化**:Java中的变量必须先声明后使用,成员变量可以自动初始化为默认值,如复合数据类型初始化为`null`,而局部变量必须显式初始化。 - **复合数据类型**:对象引用变量存储的是对象的引用,而非...
构造函数是一种特殊的方法,用于初始化对象的状态。构造函数的名称与类名相同,没有返回类型。构造函数可以分为有参构造函数和无参构造函数。 1. **无参构造函数**: ```java public class HelloWorld { String ...
我们还提供了构造函数来初始化长方形的长度和宽度,并定义了两个方法`getPerimeter()`和`getArea()`,分别用于计算长方形的周长和面积。 接下来,我们需要创建`MyRectangle`类的对象,并调用这些方法来求解实际问题...