java中静态代码块、静态方法、static关键字详解

【顾邦小讲堂】第十九期 RC Snubber吸收电路详解:抑制MOSFET振铃现象与过冲的设计技巧! 通过RC Snubber电路有效抑制MOSFET DS端的过冲及振铃现象,帮助工程师们在设计中提升电路的稳定性和可靠性 阅读详情

最近在准备面试,复习java基础知识,对java中和static关键字相关的静态方法、静态代码块、非静态代码块、静态成员变量的用法进行了详细的总结。

1. 静态成员变量

声明为static关键词修饰的变量叫做静态成员变量,也叫作全局变量。被static修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它不依赖类特定的实例,被类的所有实例共享。只要这个类被加载,Java虚拟机就能根据类名在运行时数据区的方法区内找到他们。因此,static对象可以在它的任何对象创建之前访问,无需引用任何对象。



2. 静态代码块

static 代码块也叫静态代码块,是在类中独立于类成员的static语句块,可以有多个,位置可以随便放,它不在任何的方法体内,JVM加载类时会执行这些静态的代码块,如果static代码块有多个,JVM将按照它们在类中出现的先后顺序依次执行它们,每个代码块只会被执行一次。在静态方法里面只能直接调用同类中其他的静态成员(包括变量和方法),而不能直接访问类中的非静态成员。因为对于非静态的方法和变量,需要先创建类的实例对象后方可使用,而静态方法在使用前不用创建任何对象。

声明方式:

static
{
       //do something
}

3. 非静态代码块

非静态代码块的执行顺序在构造方法执行之前,类每new一次都会执行。

声明方式:不加任何修饰符

{
      //do something
}

4. 静态方法

静态方法可以直接通过类名调用,任何的实例也都可以调用,因此静态方法中不能用this和super关键字,不能直接访问所属类的实例变量和实例方法 (就是不带static的成员变量和成员成员方法),只能访问所属类的静态成员变量和成员方法。因为类所属的实例变量和实例方法需要对象创建之后才会存在。

声明方式:

public static void dosomething()
{
     //do something
}

接下来看看下面的例子:

package staticblock;

public class Parent
{
	//静态代码块,只在类装载的时候执行
	static
	{
		System.out.println("parent static block");
	}
	
	//非静态代码块,每new一次都会执行
	{
		System.out.println("parent non-static block");
	}
	
	public  Parent()
	{
		System.out.println("parent constractor block");
	}
}


package staticblock;

public class Child extends Parent
{
	//子类静态代码块
	static
	{
		System.out.println("child static block");
	}
	
	//子类非静态代码块
	{
		System.out.println("child non-static block");
	}
	
	//子类构造方法
	public Child()
	{
		System.out.println("child constractor block");
	}
	
	//静态方法需要在调用 的时候才执行
	public  static void get()
	{
		System.out.println("this is a static method!");
	}
	
	public static void main(String[] args)
	{
		new Child();
		System.out.println("------------------");
		new Child();
		Child.get();
	}
}

执行之后的输出结果:

parent static block
child static block
parent non-static block
parent constractor block
child non-static block
child constractor block
------------------
parent non-static block
parent constractor block
child non-static block
child constractor block
this is a static method!

我们看到静态代码块在执行中只执行了1次,而非静态代码块执行了两次,静态方法需要调用才会执行。执行顺序是先执行父类的静态代码块,然后执行子类的静态代码块;然后执行父类的非静态代码块,再执行父类的构造方法;之后再执行子类的非静态代码块,再执行子类的构造方法。静态代码块》非静态代码块》构造方法。







【RT-DETR涨点改进】全网独家首发Conv改进篇 | SCI一区 2025 | RT-DETR引入轻量级CGHalfConv通道分组半卷积模块,含多种创新改进、有效提升检测精度 本文介绍引入 GC Half-convolution 模块可以显著提升 RT-DETR 在资源受限环境下的性能。该模块通过通道分组与半卷积结合,有效减少了参数量与计算量,增强了模型对不同尺度和复杂背景下目标的特征提取能力。在保持模型轻量化的同时,GC Half-convolution 能够更细致地区分目标的边缘纹理、颜色、结构等关键信息,从而提升检测精度。特别是在面对小目标、多类别、形态相近的目标时,该模块能提取更具判别性的局部与全局特征,优化 RT-DETR 的检测效果,并加快推理速度。 阅读详情

相关推荐

AB SCIEX质谱数据分析实战:从PeakView入门到精通

质谱分析是现代生命科学和药物研发中不可或缺的核心技术,它通过测量离子的质荷比来鉴定和定量化合物。其基本原理是将样品离子化后,在电场和磁场中按质荷比分离,最终形成质谱图。这项技术的核心价值在于能够从复杂混合物中高灵敏度、高特异性地获取化合物的定性和定量信息,广泛应用于代谢组学、蛋白质组学、环境监测和药物分析等领域。在实际工作中,高效的数据处理平台至关重要。以AB SCIEX质谱仪生成的.wiff文件为例,其原始数据需要专业软件进行解析。PeakView软件正是这样一个综合平台,它集成了高级数据处理、谱图解析和

weixin_29053577的博客 309

Java中静态代码块、实例代码块和静态方法的执行顺序详解(Main方法,构造方法)

文章示例清晰地展示了静态代码块、静态方法和实例代码块的执行顺序。在Java编程中,理解静态代码块、实例代码块和静态方法的执行顺序对于编写高效和可靠的代码至关重要。实例代码块在每次创建类的实例时执行。它们在构造方法之前执行,但在任何静态代码块之后,因为实例的创建总是在类加载之后。静态代码块在类第一次被加载到JVM时执行,仅执行一次。子类继承父类,则父类和子类中的静态代码块、实例代码块和静态方法的执行顺序。构造方法在实例代码块之后执行,每次创建类的新实例时),它将在静态代码块之后执行。

努力上进!!加油加油!! 3872

复现论文报错解决

博主复现论文代码过程中遇到的各种报错及解决方案~

rellvera的博客 1060

java静态代码块、静态方法、静态变量、构造代码块、普通代码块

一、静态代码块   1.在java类中(方法中不能存在静态代码块)使用static关键字和{}声明的代码块: public class CodeBlock{ static{ System.out.println("静态代码块"); } }   2.执行时机     静态代码块在类被加载的时候就运行了,而且只运行一次,并且优先于各种代码块以及构造函数。如果一个类中有多个静态代码块,就会按照书写的顺序执行。   3.静态代码块的作用:     一般情况下,

az44yao的专栏 523

YOLOv8改进 | 主干篇 | 利用MobileNetV1替换Backbone(轻量化网络结构)

本文给大家带来的改进机制是MobileNetV1,其是专为移动和嵌入式视觉应用设计的轻量化网络结构。这些模型基于简化的架构,并利用深度可分离卷积构建轻量级深度神经网络,其引入了两个简单的全局超参数,用于在延迟和准确性之间进行有效的权衡。实验表明,MobileNets在资源和准确性的权衡方面表现出色,并在多种应用(如对象检测、细粒度分类、面部属性识别和大规模地理定位)中展现了其有效性,这个模型非常适合轻量化的读者来使用。适用检测目标:轻量化网络结构适合轻量化的读者。

Snu77的博客 3966

基于上下文的 Listwise 重排模型(一):miRNN

2018年阿里团队提出的miRNN(Mutual Influence aware RNN)模型,首次将电商搜索重排建模为全局优化问题,通过RNN捕捉商品序列的相互影响,结合Beam Search生成最优排序,在淘宝搜索中实现GMV(商品交易总额)提升5%的突破。本文将结合论文细节与通俗案例,拆解这一工业级重排框架的核心逻辑。

进一步有进一步的欢喜~ 1918

静态代码块

是在类被加载时执行的一段代码,它在类的生命周期中只会执行一次。静态代码块使用关键字 "static" 声明,并被包含在类的声明中。静态代码块常用于在类加载时进行一些初始化操作,例如初始化静态变量或执行静态方法。它们的执行顺序是在类被加载时自上而下执行。静态代码块在类加载时首先被执行,然后才是主方法。这意味着静态代码块可以在类加载之前进行一些必要的初始化工作。静态代码块只会执行一次,即使类被实例化多次,静态代码块也只会在类加载时执行一次。

a402498234的博客 3274

Allegro如何输出ODB文件操作指导

在PCB设计完成之后,需要输出生产文件用于生产加工,除了gerber文件可以用生产制造,ODB文件同样也可以用于生产,如下图。用Allegro如何输出ODB文件,具体操作如下。如何输出ODB文件操作指导。

weixin_54787054的博客 7213

static应用知识:代码块

static应用知识:代码块

南辞的博客 5215

人工智能训练师三级考试大纲深度解读|理论+实操分值分布+六大模块占比

三级人工智能训练师考试分为理论和实操两大模块(各100分,合格线60分)。理论考试包含AI基础(30%)、数据标注(25%)、模型训练(20%)、测试(15%)和系统运维(10%),题型为客观题;实操考核侧重数据标注(40%)、模型测试(35%)和系统运维(25%),采用现场操作形式。复习应优先关注AI基础和数据标注等高分值模块,实操需重点掌握标准流程和结果准确性(占评分70%)。考试要求两模块均达标,理论侧重概念理解,实操强调规范执行与文档完整。

白话机器学习 1102

torch.nn.rnn实现循环神经网络

------------------------------------nn.rnn模型实现。#------------------------------------模型实现。#-----------------------------------训练模型。#-----------------------------------训练模型。#--------------------------------读取数据。实现循环神经网络,并在至少一个数据集上进行实验,从训练时间、预测精度、...

matlab_python22的博客 2973

【JavaSE专栏60】静态代码块,Java类加载过程中执行的一段代码

本文讲解了 Java 中静态代码块概念及语法,并给出了样例代码。静态代码块是 Java 类在加载过程中执行的一段代码。

Designer 小郑的技术博客 2305

利用XGBoost实现短期电力负荷预测

本数据集为某地区2009年-2015年的用电负荷,时间片为每分钟这里我们定义了XGB模型作为实例,来进行模型训练,之后我们会对其使用网格搜索找到最优的参数。

优快云 精品推荐 4495

Java中的static关键字:静态变量,静态方法,静态代码块

static关键字:修饰符 功能: 它可以修饰变量,修饰方法,修饰代码块,修饰内部类 目录 static关键字:修饰符 功能: 1.static修饰变量:静态变量 2.static修饰方法:静态方法 3.static修饰构造代码块:静态构造代码块 4.总结 1.static修饰变量:静态变量 由static修饰的变量叫做静态变量,又可以称之为类变量,它与类同级;静态变量会随着类的加载而被加载到方法区的静态区,同时,系统会默认给静态变量赋予系统默认的初始值(不同的数...

马永斌 482

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

JAVA中的static关键字:静态变量,静态方法,静态代码块和单例模式

JAVA中的static关键字:静态变量,静态方法,静态代码块和单例模式 目录 JAVA中的static关键字:静态变量,静态方法,静态代码块和单例模式 1、静态变量 2、静态方法 3、静态代码块 4、单例模式 5、完整代码 6、返回结果: 1、静态变量 有时候,我们希望某些特定数据在内存中只有一份,而且能够被一类的所有实例对象所共享。这种成员数据就称为类的静态变量(关键...

LOVE2FY的博客 1008

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

3.7 Java中Static关键字全解(静态属性、静态方法、静态代码块)

静态属性:类级别的属性,所有对象共享。静态方法:类级别的方法,可以通过类名直接调用。静态代码块:在类加载时执行的代码块,用于初始化静态属性。

Argonaut_的博客 740

Java中静态代码块、静态方法、static关键字详解

本文对java中和static关键字相关的静态方法、静态代码块、非静态代码块、静态成员变量的用法进行了详细的总结。1. 静态成员变量声明为static关键词修饰的变量叫做静态成员变量,也叫作全局变量。被static修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它不依赖类特定的实例,被类的所有实例共享。只要这个类被加载,Java虚拟机就能根据类名在运行时数据区的方法区内找到他们。因此,st...

玩转程序的博客 394

【Java基础教程】(十一)面向对象篇 · 第五讲:透彻讲解Java中的static关键字及代码块——静态属性、静态方法,普通代码块、构造块、静态块的使用~

本文详细介绍了Java中的static关键字以及代码块的使用。通过学习static关键字,我们了解到它可以用于定义静态属性和静态方法。静态属性是类级别的变量,在整个类中只有一份副本,并且被所有实例对象所共享。静态方法则是类级别的方法,可以通过类名直接调用,而无需创建对象实例。 同时,我们也探索了代码块的不同类型:普通代码块、构造块和静态块。普通代码块用于在方法中限定变量的作用域,构造块在创建对象时执行,用于初始化对象的特定属性,而静态块在类加载时执行,常用于初始化静态成员和执行其他预处理操作。

Technology changes the world of life 2462

【Java 基础】static 关键字彻底搞懂|静态变量、静态方法、静态代码块

本文讲解 Java 中 static 关键字的核心用法:静态变量、静态方法、静态代码块与静态内部类。static 修饰的资源属于类,所有对象共享同一份数据,在类加载阶段初始化。文章重点对比静态与实例成员的访问规则,分析常见报错原因,并给出 static 常量定义、工具类方法编写和避免内存泄漏的开发原则。

2301_79964641的博客 347

JAVA中static关键字的用法------静态变量、静态方法、静态类、静态代码块、静态导包

JAVA中static关键字的常见用法 1. 静态变量 变量: 成员变量(全局变量) 1. 独立于方法之外的变量 2. 存放在全局内存中,线程共享,静态变量存放在方法区的静态区,实例变量存放在java堆内存中 静态变量(类成员变量) 通过类名访问;随着类的加载和回收创建和释放;先于对象存在; 实例变量 局部变量 1. 在方法中声明的变量,方法内有效 2. 存放在java虚拟机栈中,线程私有 2. 静态方法 1. 在类加载的时候创建 2. 静态方法必

1004 261

Java中的static关键字---静态变量---静态方法---静态代码块

static(静态) 1.概念 关键字,修饰符—>变量、方法、代码块、内部类 2.静态变量 静态变量随着类的加载(方法区的静态常量池)而加载到方法区的静态区,与类同级也叫类变量,通过类名.形式来调用静态变量也可以通过对象来调用静态变量。存储在方法区静态区时会默认给静态变量赋予系统默认初始值。类产生的对象共享同一个静态变量。看静态变量是否需要被所有的对象来共享,如果需要共享就设置成静态变量。 方法里可以定义静态变量? 静态变量与类同级,只有方法被调用时里面的内容才能出现,前后矛盾,不能定义。 publi

weixin_46883950的博客 320

【Java 基础】static 关键字全面解析,静态变量 / 静态方法 / 静态代码块一次性搞懂

本篇围绕Java static关键字展开详解,区分静态变量、静态方法、静态代码块与静态内部类。核心阐明静态资源归属类、对象共享的特性,梳理静态与实例成员互相访问的限制,搭配代码示例梳理易错点。结合开发规范与面试考点,同时衔接上一节final知识点,帮助快速理清静态相关高频面试问题。

2301_79964641的博客 224

Java—static关键字(静态变量、静态方法、静态代码块)

一、

小美灵儿的博客 517

在Java中,static关键字可以修饰的元素有哪些?说明静态变量(类变量)的特点和访问形式,说明静态方法(类方法)的特点、访问形式、作用和使用的注意事项,什么是静态代码块,静态代码块中的代码什么执行

static可以修饰的元素 属性、方法、代码块 1)静态变量特点 所有对象共享 在类被载入时创建,只要类存在,static变量就存在 两种方式访问: 直接访问:类名.属性; 实例化后访问:对象名.属性; 2)静态方法特点: 不需要实例化,可以直接访问 两种方式访问: 直接访问:类名.方法名(); 实例化后访问:对象名.方法名(); static方法的作用: 简化方法的使用; 便于访问静态属性; 注...

小覃的博客 3537

Java中static关键字(静态变量,静态方法,静态代码块)

在《Java编程思想》P86页有这样一段话: “static方法就是没有this的方法。在static方法内部不能调用非静态方法,反过来是可以的。而且可以在没有创建任何对象的前提下,仅仅通过类本身来调用static方法。这实际上正是static方法的主要用途。” 这段话虽然只是说明了static方法的特殊之处,但是可以看出static关键字的基本作用,简而言之,一句话来描述就是: 方便在没有创建对象的情况下来进行调用(方法/变量)。 很显然,被static关键字修饰的方法或者变量不需要依赖于对象来进行访问,

Rocky balboa 909

Static关键字详解(静态成员变量,静态方法,代码块,静态代码块,单例模式)

静态成员(包括静态变量和方法)属于类级别的成员,它们不是任何对象的实例的一部分,而是与类本身相关联。如果有一些逻辑需要在创建类的实例时执行,而这些逻辑又不适合放在构造器中,可以使用匿名代码块来完成。如果有一些逻辑需要在类加载时执行,而不是在创建实例时执行,可以使用静态代码块。匿名代码块通常用于初始化类的实例成员变量,它会在每次创建类的实例对象时执行。静态代码块通常用于初始化类的静态成员变量,它会在类加载时执行,且只执行一次。匿名代码块中定义的变量只在代码块内部有效,不会影响到类中的其他成员变量。

gn78666的博客 1113

【Java 每日一练 - Day5】static 关键字全解析!静态方法 / 变量 / 代码块 + 面试避坑指南

今天咱们攻克 Java 基础中极具实用性的考点 ——static 关键字,这题不仅考用法,还常结合类加载机制、对象实例化流程出题,是面试高频加分项,赶紧往下看!3.不要滥用 static:静态成员生命周期长,过度使用可能导致内存泄漏(如静态集合缓存大量对象)。(提示:结合静态代码块、构造代码块、构造方法的执行顺序分析)​。3.静态代码块、构造代码块、构造方法的执行顺序是什么?静态代码块 → 构造代码块 → 构造方法​。与类的生命周期一致(JVM 退出时销毁)​。与对象的生命周期一致(GC 回收时销毁)​。

Xiong_Ji537的博客 578
上一篇: solr5.5之从数据库中导入数据并建立索引
下一篇: Java内存区域详解
jcncsdn
博客等级 码龄12年 5粉丝 13原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值