进行了java开发有一段时间了,遇到一个有趣的问题,在此特意记录一下运行程序。
例1:
package com.yunix; public class Test { public Test() { System.out.print("3"); } static { System.out.print("1"); } { System.out.print("2"); } public static void main(String[] args) { for(int i=0;i<10;i++){ new Test(); System.out.println(); } } }
运行结果为:
123 23 23 23 23 23 23 23 23 23
例2:
package com.yunix; public class Test { public Test() { System.err.print("3"); } static { System.out.print("1"); } { System.out.print("2"); } public static void main(String[] args) { for(int i=0;i<10;i++){ new Test(); System.out.println(); } } }
运行结果为(此结果不唯一,但是1一直在2的前面,3的位置不确定):
12 2 2 2 2 2 2 2 2 2 3333333333
相关推荐
java面试题静态加载顺序构造方法 继承与static 面试题目如下:请写出程序执行完成之后的结果。 package extend; public class X { Y y=new Y(); static{ System.out.println("tttt"); } X(){ System....
java 静态_非静态 字段_方法_代码块 子类父类构造_初始化顺序! 三个class 让你清清楚楚 第一个class java代码如下: package initialOrder; class Parent { // 静态变量 public static String p_StaticField...
Java编程语言中,类的初始化过程涉及到静态块(static block)、实例块(instance block)以及构造器(constructor)。这些块的执行顺序对于理解和编写复杂的Java程序至关重要,特别是在涉及继承关系时。下面我们将...
在Java编程中,类的域...总之,理解和熟练运用Java的静态域和实例域以及它们与构造方法的关系是Java程序员的基本技能。通过合理的设计和使用,可以有效地组织和管理类的状态,为代码的健壮性和可维护性打下坚实基础。
在创建一个对象时,Java首先初始化类中的静态成员,然后是实例成员,最后才是构造方法。这意味着如果一个类中有多个成员变量,它们的初始化顺序将按照代码中声明的顺序进行。 #### 八、总结 构造方法是Java编程...
本文将深度剖析几个常见的Java面试题目,包括方法重写、静态代码块和构造方法的执行顺序。 首先,我们来讨论**方法重写(Override)**。在面向对象编程中,子类可以继承父类的属性和方法,有时需要根据自己的需求对...
Java静态工厂方法是一种特殊的工厂方法,它可以返回类的实例,而不是通过构造器来获取实例。静态工厂方法通常以valueOf、getInstance、newInstance等命名,具有三个特点:具名、环保、多子。 具名:静态工厂方法...
Java构造方法解析 ...总结起来,Java构造方法是初始化类实例的关键工具,它们允许我们在创建对象时定制初始化过程,确保对象的正确状态。理解并熟练运用构造方法及其特性对于编写高效、可维护的Java代码至关重要。
在Java编程语言中,了解静态代码块和构造方法的执行顺序是至关重要的,尤其是在处理类的初始化和对象的创建时。下面将详细解释这些概念及其执行逻辑。 首先,静态代码块(也称为静态初始化器)是由`static`关键字...
5. 子类的非静态构造方法。 例如: ```java class SuperClass { SuperClass() { System.out.println("SuperClass constructor"); } } public class SubClass extends SuperClass { SubClass() { System.out....
它的核心功能之一就是能够模拟静态方法、构造函数、final类和方法、私有方法等,这些都是传统单元测试难以处理的部分。 首先,理解静态方法的测试挑战。静态方法与对象实例无关,它们属于类本身,因此无法通过依赖...
- **静态构造函数**在.NET运行库加载类时执行,通常是在第一次调用类成员之前。 - **实例构造函数**在创建对象实例时执行。 3. **初始化次数**: - **静态构造函数**只执行一次,这有助于确保静态成员的初始化仅...
构造方法在创建对象时由系统自动调用,通常用于初始化类的非静态成员变量。下面详细解析Java构造方法的特性和使用方法。 构造方法的特性: 1. 方法名与类名相同:构造方法的名字必须与类名完全相同,这是Java语法...
在Java中,静态修饰符用于声明类级别的变量或方法,这意味着它们属于类本身,而不是类的任何实例。静态变量被所有类的实例共享,而每个实例都有其自己的非静态变量副本。因此,静态变量在内存中只有一份,无论创建了...
在Java中,反射API(java.lang.reflect)允许我们获取类的信息,包括类名、构造函数、方法和字段,甚至可以在运行时创建和操作这些类的对象。这对于动态绑定、元编程和框架开发具有重要意义。 要调用一个类的静态...
在Java中,除了单态模式,构造方法私有化还常用于其他设计模式,如工厂模式(Factory Pattern)和抽象工厂模式(Abstract Factory Pattern),以及作为静态工具类(Static Utility Class)的实现方式,防止这些类被...
JAVA静态成员和实例成员的加载时机,先有对象还是先load类的静态成员,先有实例还是先调用构造方法等
静态方法不能使用 this 关键字,因为静态方法不属于类的实例,所以 this 也就没有什么东西去指向。构造器的 this 指向同一个类中,不同参数列表的另外一个构造器。 四、“super”关键字的用法 构造器和方法 都用...
静态方法通常用于那些不需要访问类实例状态的操作,例如工具方法、计算方法或常量定义。 2. 静态变量 静态变量也是与类关联,而不是与类的每个实例关联的变量。所有类的实例共享同一份静态变量的拷贝,这意味着改变...
通过这个例子,我们可以看到,Java反射机制不仅可以用于实例方法的动态调用,也可以方便地调用静态方法。这在某些场景下非常有用,比如插件系统、框架设计、单元测试等,能够提高代码的灵活性和可扩展性。但是,反射...