java static 如何理解

news/2024/9/23 22:55:01/

在Java中,static关键字是一个重要的概念,它用于定义类的静态成员,包括静态变量(也称作类变量)、静态方法和静态代码块。static关键字的主要作用是创建独立于对象的成员,这些成员属于类本身,而不是类的实例。下面详细介绍static的不同方面:

1. 静态变量(Static Variables)

静态变量是类级别的变量,它们与类的所有实例共享。这意味着不论创建了多少个对象,静态变量在内存中只有一个副本。静态变量在类加载时初始化,并且在整个程序运行期间都存在。

例如:

java">public class MyClass {public static int count = 0; // 静态变量public MyClass() {count++; // 每创建一个对象,count增加1}
}

在这个例子中,count是一个静态变量,它记录了MyClass对象创建的数量。

2. 静态方法(Static Methods)

静态方法是类级别的方法,它们可以在不创建类的实例的情况下被调用。静态方法只能访问静态成员,不能访问实例成员,因为实例成员需要一个对象才能存在。

例如:

java">public class MyClass {public static void sayHello() {System.out.println("Hello from static method!");}
}// 调用静态方法
MyClass.sayHello();

3. 静态代码块(Static Blocks)

静态代码块在类加载时只执行一次,主要用于初始化静态变量。它们通常用于设置静态变量的初始值。

例如:

java">public class MyClass {public static int x;static {x = 10; // 在类加载时初始化x}
}

4. 静态内部类(Static Inner Classes)

静态内部类是一种特殊的内部类,它不依赖于外部类的实例。静态内部类可以访问外部类的静态成员,但不能访问非静态成员。

例如:

java">public class OuterClass {public static class StaticInnerClass {public void print() {System.out.println("This is a static inner class.");}}
}// 使用静态内部类
OuterClass.StaticInnerClass innerObj = new OuterClass.StaticInnerClass();
innerObj.print();

5. 静态导入(Static Imports)

static关键字也可以用于导入静态成员,这样就不需要通过类名前缀来访问它们,简化了代码。

例如:

java">import static static">java.lang.System.static">out;public class Main {public static void main(String[] args) {out.println("Hello, world!"); // 直接使用out代替System.out}
}

总结

static关键字在Java中主要用于实现类级别的共享,提高了代码的效率和组织性。理解和恰当地使用static可以帮助你编写更清晰、更有效的代码。


http://www.ppmy.cn/news/1468657.html

相关文章

【ARM64 常见汇编指令学习 14.2 -- -- ARM 汇编 .align 和 .section】

文章目录 ARM 汇编 progbits 编译指令 ARM 汇编 progbits 编译指令 在ARMv8架构中,当涉及到汇编代码的组织和段(section)的指定,指令如.section .text, "ax", %progbits扮演了重要的角色。这行代码在汇编文件中用于指明接下来的代码应该放置在…

VS2019创建c++动态链接库dll与调用方法

VS2019创建c动态链接库dll与调用方法 1.点击文件-》新建-》项目,输入dll,选择具有导出项的(DLL)动态链接库 2.输入一个文件名:dll2 头文件.h 3.添加加减法函数: // 下列 ifdef 块是创建使从 DLL 导出更简单的 // 宏的标准方法。此 DLL 中的…

【Vue】组件的存放目录问题

注意: .vue文件 本质无区别 组件分类 .vue文件分为2类,都是 .vue文件(本质无区别) 页面组件 (配置路由规则时使用的组件)复用组件(多个组件中都使用到的组件) 存放目录 分类开来的…

重新学习STM32(2)NVIC

概念简介 NVIC,即嵌套向量中断控制器,控制着中断相关的功能,是内核里面的一个外设。 中断在单片机编程中的作用是使单片机能及时响应需要立即处理的事件,但是这些事件也分紧急和非紧急,因此需要优先级来区分。…

短视频矩阵源码----如何做正规开发规则分享:

一、什么是SaaS化服务技术开发? (短视频矩阵系统是源头开发的应该分为3个端口---- 总后台控制端、总代理端口,总商户后台) SaaS是软件即服务(Software as a Service)的缩写。它是一种通过互联网提供软件应…

网络安全第一课

网络设备、 交换机,路由器,网线,防火墙。 虚拟化技术分为哪两大类 交换机是组建局域网,内网的重要设备,但是交换机依赖路由器的内网外网 局域网一般称为内网 路由器两个口,一个连接内网,一…

mysql自带分页

select 查询列表 from 表 limit offset,pagesize; offset代表的是起始的条目索引,默认从0开始size代表的是显示的条目数offset(n-1)*pagesize -- 第-页 limit 0 5 -- 第二页 limit 5,5 -- 第三页 limit 10,5 -- 第n页limit(n-1)*pagesize,pagesize -- pages…

eclipse连接后端mysql数据库并且查询

教学视频:https://www.bilibili.com/video/BV1mK4y157kE/?spm_id_from333.337.search-card.all.click&vd_source26e80390f500a7ceea611e29c7bcea38本人eclipse和up主不同的地方如下,右键项目名称->build path->configure build path->Libr…