Java static关键字详解
需积分: 10 71 浏览量
更新于2024-09-12
收藏 7KB TXT 举报
"Java之static用法"
在Java编程语言中,`static`关键字具有重要的作用,它用于修饰类的成员变量、成员方法以及代码块。`static`关键字的使用有以下几个关键点:
1. **静态变量(static fields)**:当一个变量被声明为`static`时,这个变量称为静态变量,它属于类而不是类的实例。这意味着所有类的实例共享同一份静态变量的拷贝。静态变量在类加载时初始化,并且可以通过类名直接访问,而无需创建对象。例如,`Test5`类中的`private static int a`就是一个静态变量。
2. **静态方法(static methods)**:`static`修饰的方法称为静态方法,如`main`方法。静态方法同样属于类,不依赖于类的实例就可以调用。它们不能访问非静态成员,因为非静态成员与类的每个实例关联。例如,`Test5`类中的`public static void main(String[] args)`就是静态方法,它是程序的入口点。
3. **静态代码块(static blocks)**:`static`代码块在类加载时执行一次,用于初始化静态变量。例如,`Test5`类中有两个静态代码块,它们按顺序执行并初始化`a`的值。
4. **访问权限与static**:静态成员可以是`private`、`protected`或`public`。如果一个静态成员被声明为`private`,那么它只能在定义它的类内部访问。`static`关键字不能与`final`一起修饰局部变量,但可以与`final`一起修饰成员变量,形成常量。
5. **内存管理与static**:静态变量存储在方法区(在Java 8后称为元空间Metaspace),而非堆内存。因此,静态变量不会随着对象的创建和销毁而改变。在示例代码中,`Test5`类的`a`变量在不同静态代码块和`main`方法中被修改,体现了静态变量在整个类生命周期中的单一实例特性。
6. **静态与非静态的交互**:静态方法无法直接访问非静态成员,因为非静态成员是依赖于具体对象的。在`Test5`类的`f()`方法中,由于没有`static`关键字,它是一个非静态方法,可以访问非静态变量`b`,并且可以使用`this`关键字来引用当前对象。
7. **内嵌类(Inner Class)与static**:对于内嵌类,可以声明为`static`,这样的类称为静态内嵌类(Static Nested Class)。静态内嵌类不持有对外部类的引用,可以直接通过类名创建实例,而普通内嵌类需要先创建外部类的实例。
总结来说,`static`关键字在Java中用于创建类级别的共享数据和行为,这使得它们在多线程环境、工具类和全局配置等方面有着广泛的应用。理解和正确使用`static`关键字是编写高效、可维护Java代码的关键。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2024-05-08 上传
2020-09-04 上传
2009-03-28 上传
2020-08-25 上传
2020-08-29 上传
2020-08-26 上传
my_kw
- 粉丝: 5
- 资源: 8
最新资源
- SSHSecureShellClient-3.2.9.rar
- auth-tool:vue项目资源权限控制解决方案,菜单、路由、按钮..
- jre-8u241-windows-x64.zip
- Currency-Conversion-Site
- lserver,易语言直接打开c盘源码,c语言
- inttet:单位四面体的 3D 积分求积-matlab开发
- 天气预报应用
- vb药品库房管理系统设计(源代码+可执行程序+论文+开题报告+外文翻译+答辩ppt).rar
- Resource
- 茶叶病害数据集data.zip
- Pokemon2
- DALLE-jp
- 小草影视V2.0.0 纯净版 无需登录.txt打包整理.zip
- m35080_Read_BitBang:用于从 m35080 eeprom 的寄存器中转储数据的 Arduino 草图
- 将P1口状态送入P0、P2、P3_单片机C语言实例(纯C语言源代码).zip
- Quicknote-crx插件