Java中的static详解

【AI智能体】Codex 插件从使用到项目开发实战操作详解 Codex 插件从使用到项目开发实战操作详解 阅读详情

Java中的static详解

static可以用来修饰成员变量,方法,代码块。使用static修饰的变量,方法称为静态成员。静态成员附属于类本身,而不依赖于类的实例对象。


static的基本使用方法:

/**
 * static的基本用法
 * @author wangcan
 *
 */
public class Test {
	
	static int num = 1;
	
	public static void Print(){
		System.out.println("static 函数调用");
	}
	
	static{
		System.out.println("静态代码块");
	}
	
    public static void main(String[] args) {
    	System.out.println(Test.num);//直接使用类名来访问静态成员变量
    	Test.Print();//直接使用类名来访问静态成员函数
    }
}

被static修饰的变量,在类被创建后就会一直存在,其生命周期与其所在的类相同。若一个类有多个实例对象,这些实例对象都会共用该静态成员变量。同时在类不创建实例对象的情况下,可以直接使用类名来访问。静态方法也是一样的。static代码块有助于提高程序的性能,因为它只会在类初次加载的时候进行初始化,且这个过程只会执行一次。从而避免每次创建对象都要进行初始化的static中的操作,降低了开销。

main方法为什么用static修饰

程序在执行main方法的时候没有创建任何对象,只有通过类名来访问,所以这时就需要使用static了。

static访问相关


在静态方法或静态块中是不能访问非静态的成员变量的。因为当类被Java虚拟机载入的时候,会对static变量进行初始化。而在类对象创建时才会对类中的非静态成员变量进行初始化操作。



可以看到static并不会影响成员的访问权限。(这点和C++是不同的)

关于static执行顺序的一道题

public class X {
	Y y = new Y();

	static {
		System.out.println("tttt");
	}

	X() {
		System.out.println("X");
	}

	public static void main(String[] args) {
		new Z();
	}
}

class Y {
	Y() {
		System.out.println("Y");
	}
}

class Z extends X {
	Y y = new Y();

	static {
		System.out.println("tt");
	}

	Z() {
		System.out.println("Z");
	}
}

输出结果如下:

我们来分析一下没行的输出。

1.  看一个程序自然要先从main函数开始,我们看main函数所在类为类X,首先虚拟器(JVM)会把对类X进行加载,此时则会执行类X中的static代码块,输出 tttt
2.  然后程序接着执行到main函数中创建Z对象,我们的视线转向类Z ,看到类Z继承自类X,类X是已经加载过的,我们不管他,然后会执行类Z中的静态代码块,输出 tt
3.  接下来就是实例化对象了,因为类Z继承自类X,所以先实例化类X中的对象,在类X中定义了类Y的对象(Y y = new Y() )所以先调用类Y的构造函数,输出Y
4.  然后调用类X的构造函数,输出X
5.  再构造子类Z的对象,看到在子类Z中也定义了类Y的对象,所以先调用类Y的构造函数,输出Y
6.  最后调用子类Z的构造函数,输出Z




【OpenClaw从入门到精通】第60篇:多智能体协同实战——用“龙虾”搭建你的数字员工团队(2026企业版) 2026年AI Agent企业落地的核心趋势,正从“单Agent单兵作战”转向“多智能体协同组网”。本文以全球开发者先锋大会“百虾大战”真实案例为蓝本,深度拆解OpenClaw多智能体协同的技术内核——三层解耦架构(模型层-技能层-网关层),系统搭建包含项目经理、架构师、执行者、质量把关者的4大核心Agent团队。通过三种主流协作架构对比、全链路配置代码实操、故障自愈实战演练,结合电商新品上架虚拟场景全流程演示,解决企业多Agent部署中的权限隔离、任务协同、运维自治三大核心痛点。 阅读详情

相关推荐

Win10下ISE14.7安装避坑全记录:从License加载失败到ChipScope连不上,我踩过的雷都在这了

本文详细记录了在Win10系统下安装ISE14.7时遇到的常见问题及解决方案,包括License加载失败、IMPACT闪退、ChipScope连接故障等。通过实际案例和步骤解析,帮助用户避开安装陷阱,确保FPGA开发工具顺利运行。特别针对license问题提供了兼容性设置和文件修改的实用技巧。

weixin_42683394的博客 225

Java静态内部类(static class)

在一个类中创建另外一个类,叫做成员内部类。这个成员内部类可以静态的(利用static关键字修饰),也可以是非静态的。 一、静态内部类的使用目的。 在定义内部类的时候,在其前面加上一个权限修饰符static。这个内部类就变为了静态内部类。如在进行代码程序测试的时候,如果在每一个Java源文件中都设置一个主方法(主方法是某个应用程序的...

Arthur_Holmes的博客 1842

R语言dlnm包避坑指南:手把手教你配置交叉基矩阵(附温度分层与滞后多项式设置)

本文详细介绍了R语言dlnm包在配置交叉基矩阵时的实用技巧与避坑指南,特别针对温度分层与滞后多项式设置提供了具体参数配置建议。通过解析`crossbasis()`函数的核心参数、温度分析的分层策略以及不同基函数的适用场景,帮助研究者高效构建分布滞后非线性模型,避免常见错误并优化模型性能。

weixin_34094282的博客 401

java static只生成一个对象

public class C {public static int i=20; //static 也是必须的private static C cc=new C();//类里面可以产生类对象 静态是必须的,因为下面getC 静态的方法不能访问非静态的private C()//这里为private就限定了大类里不能通过new产生对象{ } public static C getC()//静态是因为...

weixin_34296641的博客 344

运维与软件实施课表

运维与软件实施课表 课程 章节编号 章节 课程地址 软件及操作系统基础 ch01 软件及操作系统基础01 实施、运维工程师基本技能:https://blog.youkuaiyun.com/qq_28189423/article/details/82700539 老毛桃制作winPE镜像:https://blog.youkuaiyun.com/qq_2818942...

Mr.O~的博客 1万+

用blender为模型贴图并在gazebo中显示

用blender为模型贴图并在gazebo中显示 首先我用的是最新的blender2.92版本,附上链接https://www.blender.org/download/。并设置好简体中文。语言可以在编辑->偏好设置->界面里面设置。 首先界面右上角的摄像头,方块,灯光三个场景全都删除。 接着导入stl格式的模型文件,下面以tianbot_mini上面的激光雷达的模型为例。 导入激光雷达模型后,点击进入上方的UV Editing按钮进入UV编辑界面 此时我面看见网格化的激光雷达模型

qq_48427527的博客 8000

java 本地缓存 使用static 内存泄露 oom

java 本地缓存 使用static 内存泄露 oom

global_coding的博客 1417

S/4中的16种特殊库存类型

S/4中的16种特殊库存类型

yanzibing99的博客 1万+

java中静态成员变量、实例变量、局部变量何时创建、何时销毁?

源:http://zhidao.baidu.com/question/166761623.html 评: 静态成员变量在类装载的时候就进行了创建,在整个程序结束时按序销毁。实例变量在类实例化对象时候创建,在对象销毁的时候销毁。局部变量在局部范围使用时创建,跳出局部范围销毁。 ...

mauersu 3328

UniApp消息推送进阶:不用插件实现动态语音播报(含保活策略)

本文详细介绍了在UniApp中实现动态语音播报的进阶方案,无需依赖第三方插件。核心采用透传消息传递动态数据,结合本地TTS引擎合成语音,并针对不同安卓厂商提供了深度通道配置与差异化保活策略,有效解决了App退至后台或被清理后语音播报失效的难题。

weixin_29224309的博客 486

当爬虫遇到TikTok滑块:一份给开发者的verifyV2避坑指南与调试心得

本文详细解析了TikTok滑块验证码verifyV2的破解与优化策略,涵盖验证码触发机制、滑块图片获取、验证请求构造及高级调试技巧。通过实战案例和代码示例,帮助开发者有效应对复杂反爬机制,提升验证通过率。特别针对verifyV2系统的加密算法和轨迹模拟提供了专业解决方案。

weixin_30919429的博客 641

静态代码块的执行与销毁

当程序执行时,首先会输出"静态代码块执行",证明静态代码块随着类的加载首先被执行。随后,输出"程序开始执行",然后实例化对象,并没有再次输出"静态代码块执行",再接下来输出"程序执行结束"。可以看到,静态代码块只在程序开始执行时被执行一次,它不会随着对象的实例化而重复执行。当说到静态代码块在执行完成后会被"销毁"时,实际上指的是静态代码块在执行后,它的作用和内容不再起作用,不再存在于内存中。扩展:静态代码块的执行顺序:静态代码块------>非静态代码块------>构造函数。,其中包含一个静态代码块。

qymmrly的博客 499

windows中通过docker部署LocateAnything-3B模型

windows中通过docker部署LocateAnything-3B模型

yilvyangguang520的博客 485

Java static关键字详解

static关键字 在类中,用static声明的成员变量为静态成员变量,也成为类变量。类变量的生命周期和类相同,在整个应用程序执行期间都有效。 这里要强调一下: static修饰的成员变量和方法,从属于类 普通变量和方法从属于对象 静态方法不能调用非静态成员,编译会报错 static关键字的用途 一句话描述就是:方便在没有创建对象的情况下进行调用(方法/变量)。 显然,被sta...

测试极客 15万+

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

static详解java_Java的static详解

static ['stætɪk]n. 静电;静电干扰adj. 静态的;静电的;静力的在计算机上我们译为:静态的。在Java种根据它修饰对象不同,我们可以划分为1. static对象2. static方法3. static语句块TAG:static对象和static方法都属于类的成员,他们不属于类的任何实例,被所有实例共享。static语句块又叫“静态代码块”,当JVM加载类时会自动执行static...

weixin_35353285的博客 257

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作用详解

static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念。被static修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它不依赖类特定的实例,被类的所有实例共享。只要这个类被加载,Java虚拟机就能根据类名在运行时数据区的方法区内找到他们。因此,static对象可以在它的任何对象创建之前访问,无需引用任何...

weixin_31967551的博客 9286

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

java 中static 类详解_java中的static详解

java中的static详解如果一个类成员被声明为static,它就能够在类的任何对象创建之前被访问,而不必引用任何对象。static 成员的最常见的例子是main( ) 。因为在程序开始执行时必须调用main() ,所以它被声明为static。声明为static的变量实质上就是全局变量。当声明一个对象时,并不产生static变量的拷贝,而是该类所有的实例变量共用同一个static变量,例如:声明...

weixin_27012835的博客 2023

Java的static详解

static ['stætɪk] n. 静电;静电干扰 adj. 静态的;静电的;静力的 在计算机上我们译为:静态的。在Java种根据它修饰对象不同,我们可以划分为 1. static对象 2. static方法 3. static语句块 TAG:static对象和static方法都属于类的成员,他们不属于类的任何实例,被所有实例共享。stati...

weixin_30663471的博客 66

JAVA static详解

Static详解 public class Student { ​ private static double score; //静态变量 private int age; //非静态变量 ​ public void run (){ ​ } ​ public static void go(){ ​ } ​ public static void main(String[] args) { Student s1 = new Stude...

aixuexidexwz的博客 350

static详解java_java中static作用详解

static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念。被static修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它不依赖类特定的实例,被类的所有实例共享。只要这个类被加载,Java虚拟机就能根据类名在运行时数据区的方法区内定找到他们。因此,static对象可以在它的任何对象创建之前访问,无需引用任...

weixin_35723924的博客 108

java static 函数_详解java中的static关键字

Java中的static关键字可以用于修饰变量、方法、代码块和类,还可以与import关键字联合使用,使用的方式不同赋予了static关键字不同的作用,且在开发中使用广泛,这里做一下深入了解。静态资源(静态变量与静态方法)被static关键字修饰的变量和方法统一属于类的静态资源,是类实例之间共享的。被static关键字修饰的变量、方法属于类变量、类方法,可以通过【类名.变量名】、【类名.方法名】直...

weixin_34109927的博客 2195

Java中static的作用详解

static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念。 被static修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它不依赖类特定的实例,被类的所有实例共享。 只要这个类被加载,Java虚拟机就能根据类名在运行时数据区的方法区内定找到他们。因此,static对象可以在它的任何对象创建之前访问,无需...

麦子的博客 4万+

java中的static详解

 如果一个类成员被声明为static,它就能够在类的任何对象创建之前被访问,而不必引用任何对象。static 成员的最常见的例子是main( ) 。因为在程序开始执行时必须调用main() ,所以它被声明为static。声明为static的变量实质上就是全局变量。当声明一个对象时,并不产生static变量的拷贝,而是该类所有的实例变量共用同一个static变量,例如:声明一个static的

sniperwang的专栏 2万+

java中static详解

static修饰类中的变量 static修饰变量使得该变量有了静态属性,又叫类属性。这个变量会被保存在全局数据区(方法区–所有对象共享的区域) 在调用过程中通过类名调用,无需实例化出对象。 static是不能修饰方法中的变量的,因为方法(无论静态方法还是普通方法)是定义在栈中的,栈上定义的变量都是局部变量,而且方法是依赖与对象而静态变量不依赖对象。这不是很矛盾嘛。所有Java中规定局static修...

坚持不懈做贡献 3055

java static int a_java中static作用详解

static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念。被static修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它不依赖类特定的实例,被类的所有实例共享。只要这个类被加载,Java虚拟机就能根据类名在运行时数据区的方法区内定找到他们。因此,static对象可以在它的任何对象创建之前访问,无需引用任...

weixin_32365089的博客 3259

Java中的Static详解

static对象和static方法都属于类的成员,他们不属于类的任何实例,被所有实例共享。static语句块又叫“静态代码块”,当JVM加载类时会自动执行static语句中的代码。 1. static对象​ 根据是否由static修饰,对象分为:静态变量和实例变量。对于静态变量,在JVM加载类的时候就为它分配内存,是第一次也是唯一一次对它分配内存部;而实例变量在类每次实例化的...

a7412605567的博客 128
上一篇: 设计模式:接口隔离原则
下一篇: Java中的abstract详解
cassiePython
博客等级 码龄12年 303粉丝 135原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值