¿Qué es un bloque static en Java?

¿qué es un bloque static en java?

java 中的静态块是仅在类被 classloader 加载类时(即类加载到内存中时)执行一次的代码块。一旦类已经加载,静态块将不会再次执行。它的主要目的是在类第一次加载时、创建任何实例之前执行某些代码,例如初始化类的静态变量。事实上,一个类可以有多个静态块,并且这些静态块将按照声明的顺序执行。静态块的语法如下:

static {    // código a ejecutar}

假设我们有以下课程:

public class main {    static {        system.out.println("ejecutando bloque estático de main");    }    public static void main(string[] args) {        system.out.println("ejecutando método main de main");    }}

知道java应用程序的入口点是main方法,当执行main类时,它会被加载到内存中,并且首先执行的将是静态块,然后是main方法。考虑到静态块将始终在类的任何静态或非静态方法之前执行,甚至在类构造函数本身之前执行。

ejecutando bloque estático de mainejecutando método main de main

与静态方法一样,静态块无法访问类的实例变量,因为这些实例变量是在创建类的任何实例之前执行的。但是,它们可以访问类的静态属性和方法,您只需考虑到,如果块中需要静态属性,则必须在块之前声明它们,以便可以使用它们(声明的顺序很重要)。

// uso incorrecto// cannot read value of field 'edad_maxima' before the field's definitionpublic class persona {    static {        system.out.println("la edad máxima es: " + edad_maxima);    }    private static int edad_maxima = 100;}
// uso correctopublic class persona {    private static int edad_maxima = 100;    static {        system.out.println("la edad máxima es: " + edad_maxima);    }}

让我们看另一个例子,我们有具有以下结构的 person 类:

图片上传插件zyupload java版实例 图片上传插件zyupload java版实例

图片上传插件zyupload java版实例

图片上传插件zyupload java版实例 49 查看详情 图片上传插件zyupload java版实例

public class persona {    private string name;    private int age;    private static int numeropersonas;    public static final int edad_maxima;    static {        numeropersonas = 0;        edad_maxima = 100;        system.out.println("número de personas al inicio: " + numeropersonas);    }    public persona(string name, int age) {        this.name = name;        this.age = age;        numeropersonas++;        system.out.println("se ha creado una persona con nombre " + name + " y edad " + age);    }    public static int getnumeropersonas() {        return numeropersonas;    }    // getters y setters}

static块用于分别初始化静态属性numberpersonas和max_age的值(静态属性可以从声明中初始化),随后调用getnumberpersonas()方法并通过打印开头的numberpersonas的值控制台(应该是 0)。

如果我们创建此类的两个实例并调用 getnumberpersonas() 方法,我们应该得到以下输出:

public class main {    public static void main(string[] args) {        persona persona1 = new persona("juan", 25);        persona persona2 = new persona("maría", 30);        system.out.println("número de personas al final: " + persona.getnumeropersonas());    }}
Número de personas al inicio: 0Se ha creado una persona con nombre Juan y edad 25Se ha creado una persona con nombre María y edad 30Número de personas al final: 2

正如我们所见,静态块在创建任何实例之前执行,并执行其中包含的代码,随后创建该类的两个实例,最后获取实例的数量。在此示例中,我们可以清楚地看到静态块仅执行一次,无论生成的实例数量如何。

一般来说,这是静态块的用途,在将类加载到内存中时只执行一次代码,例如初始化静态变量、加载库等。

以上就是¿Qué es un bloque static en Java?的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/387405.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月6日 14:16:28
下一篇 2025年11月6日 14:17:18

相关推荐

发表回复

登录后才能评论
关注微信