java中的静态块,非静态块
java中经常有一些静态块,这是用来在生成类之前进行的初始化,无论java还C++中的static,都是最先初始化好的。
凡是声明为static的语句(变量,方法,代码块),是在加载类的时候就执行的
在这个类第一次被调用或实例化的时候就会被执行。
静态代码块只会执行一次,一般会用来初始化一些值,并且在所有对象中全局共享。
所以注意:
a、在静态方法里只能直接调用同类中其他的静态成员(包括变量和方法),而不
能直接访问类中的非静态成员。这是因为,对于非静态的方法和变量,需要先创
建类的实例对象后才可使用,而静态方法在使用前不用创建任何对象。
b、 静态方法不能以任何方式引用this和super关键字,因为静态方法在使用前
不用创建任何实例对象,当静态方法调用时,this所引用的对象根本没有产生,
至于非静态块是存在每一个类中,除了带有static块以外,它最先执行,(在构
造函数前)下面是一个例子。
c、类装载步骤
在Java中,类装载器把一个类装入Java虚拟机中,要经过三个步骤来完成:装载、链接和初始化,其中链接又可以分成校验、准备和解析三步,除了解析外,其它步骤是严格按照顺序完成的,各个步骤的主要工作如下:
装载:查找和导入类或接口的二进制数据;
链接:执行下面的校验、准备和解析步骤,其中解析步骤是可以选择的;
校验:检查导入类或接口的二进制数据的正确性;
准备:给类的静态变量分配并初始化存储空间;
解析:将符号引用转成直接引用;
初始化:激活类的静态变量的初始化Java代码和静态Java代码块。
初始化类中属性是静态代码块的常用用途,但只能使用一次。
(简单来讲就是项目加载的时候就执行静态代码块,你想了解更清楚的话就写点代码测试一下)
public class text {
public int a;
{
System.out.println("非静态2");
}
static{
System.out .println("static");
}
text(){
System.out.println("text");
}
}
public class text1 extends text{
public int t;
public double w;
{
System.out.println("非静态块");
}
static {
System.out.println("static1");
}
public text1(){
System.out.println("text1");
}
public static void main(String args[]){
text1 te=new text1();
}
}
结果是:
static static1
非静态2
text
非静态块
text1
非静态块比构造函数更早调用。
分享到:
相关推荐
本文将深入探讨Java中的静态块与静态方法,解析它们的区别、联系以及执行顺序,帮助读者更全面地理解`static`关键字在Java中的运用。 ### 静态方法 静态方法是通过`static`关键字声明的,它属于类而不属于类的任何...
Java 中的静态变量、静态方法、静态块和静态类 Java 中的静态变量、静态方法、静态块和静态类是 Java 编程语言的四个重要概念,它们之间存在着紧密的关系。下面将对这四个概念进行详细的介绍。 一、静态变量...
21.java静态块.zip21.java静态块.zip21.java静态块.zip21.java静态块.zip21.java静态块.zip21.java静态块.zip21.java静态块.zip21.java静态块.zip21.java静态块.zip21.java静态块.zip21.java静态块.zip21.java静态块...
Java编程语言中,类的初始化过程涉及到静态块(static block)、实例块(instance block)以及构造器(constructor)。这些块的执行顺序对于理解和编写复杂的Java程序至关重要,特别是在涉及继承关系时。下面我们将...
在Java编程中,静态代码块(Static Block)和类加载器(Class Loader)是两个重要的概念,它们在软件开发中有着广泛的应用。本案例聚焦于如何利用静态代码块结合类加载器来高效地获取资源文件,尤其是属性配置文件。...
在上面的代码中,`public static void main(String [] args)`是一个静态方法,它是java程序的入口点。 3、静态初始化块 静态初始化块是指在类加载时被执行的代码块,它们用于初始化静态变量。在上面的代码中,静态...
Java编程语言中,静态块(static block)和初始化块(instance initialization block)是两种特殊的代码块,它们在程序运行的不同阶段被执行,对于类和对象的初始化有着重要作用。同时,`main`方法是Java程序的入口...
在Java编程语言中,静态块(Static Block)是一种特殊的代码段,用于初始化类级别的静态变量。它是类加载时执行的,且只执行一次。在理解静态块之前,我们需要先了解类加载的过程和静态变量的概念。 静态变量是属于...
在Java编程语言中,静态变量、静态方法、静态代码块以及非静态变量和非静态方法是核心概念,它们对于理解和编写Java程序至关重要。下面将详细解释这些概念,并通过实例程序来阐述它们的使用和内存管理。 首先,静态...
Java 中的静态代码块和非静态代码块是两个重要的概念,它们在 Java 中的应用非常广泛。下面我们来详细介绍这两个概念。 静态代码块 静态代码块是 Java 中的一种特殊的代码块,它是静态的,意思是说它是属于类的,...
### 静态的魔力:Java中静态方法和变量的深度解析 #### 一、引言 Java作为一门强大的编程语言,在软件开发领域占据着举足轻重的地位。其面向对象的特性、跨平台的能力以及强大的标准库,使得Java成为开发企业级...
Java 中的代码块可以分为静态代码块和非静态代码块两种,两者的执行时机和作用域不同。本文将通过实例代码和详细解释,阐述 Java 静态代码块与非静态代码块的区别和应用场景。 静态代码块 静态代码块是指使用静态...
这就是在JNI中调用Java静态方法的基本流程。需要注意的是,由于JNI涉及到跨语言交互,因此在处理字符串、数组等复杂数据类型时,需要特别注意类型转换和内存管理。此外,由于每次Java类加载时都会执行静态初始化代码...
java 静态_非静态 字段_方法_代码块 子类父类构造_初始化顺序! 三个class 让你清清楚楚 第一个class java代码如下: package initialOrder; class Parent { // 静态变量 public static String p_StaticField...
2. **静态块执行**:所有静态块按它们在源代码中出现的顺序依次执行。 3. **非静态域初始化**:所有非静态域按它们在源代码中出现的顺序进行初始化。 4. **非静态块执行**:所有非静态块按它们在源代码中出现的顺序...
总之,理解并有效地使用静态和对象初始化块是Java开发中的关键技能,它们可以帮助我们更好地控制类和对象的初始化过程,确保代码的高效性和正确性。在实际编程中,我们应该根据需求谨慎选择合适的初始化策略,以优化...
在探讨继承中子类与父类构造函数及静态块的执行顺序时,我们首先需要理解构造函数和静态块的基本概念及其在Java中的作用。构造函数主要用于初始化对象的状态,而静态块则是在类加载到内存中时执行的一段代码,通常...
在Java编程语言中,静态块(Static Block)是一种特殊的代码段,主要用于类的初始化。它在类被加载到Java虚拟机(JVM)时执行,且只执行一次。静态块通常用于初始化静态变量或者进行一些类级别的设置工作,而不涉及...
在Java编程语言中,了解静态代码块和构造方法的执行顺序是至关重要的,尤其是在处理类的初始化和对象的创建时。下面将详细解释这些概念及其执行逻辑。 首先,静态代码块(也称为静态初始化器)是由`static`关键字...