Java中的static关键字与静态初始化
需积分: 9 145 浏览量
更新于2024-08-18
收藏 1.26MB PPT 举报
"Java基础-静态初始化和相关概念"
在Java编程中,`static`关键字是一个非常重要的修饰符,它允许我们定义类级别的变量、方法和块,这些元素不依赖于类的实例即可访问。在给定的例子中,`static`关键字被用来初始化类变量`Person.total`。
例子分析:
```java
class Person {
public static int total;
static {
total = 100;
System.out.println("in static block!");
}
}
public class Test {
public static void main(String[] args) {
System.out.println("total = " + Person.total);
System.out.println("total = " + Person.total);
}
}
```
在这个例子中,`Person`类有一个静态变量`total`,在类加载时,与其关联的静态初始化块被执行,将`total`设置为100,并打印出`in static block!`。在`Test`类的`main`方法中,我们可以通过类名直接访问`total`,无需创建`Person`类的实例。两次输出`total`的值都是100,因为静态变量是所有类实例共享的,它们在内存中只有一个副本。
**static关键字的用途**:
1. **静态属性(类变量)**:如`Person.total`,它们在类加载时被初始化,并且是所有类实例共享的。这意味着修改一个实例的静态变量会影响到其他实例。
2. **静态初始化块**:这是类加载时执行的一段代码,通常用来初始化静态变量。在上述例子中,`total`的初始化就发生在静态块内。
3. **静态方法**:静态方法与类相关联,而不是类的任何实例。它们不能访问非静态变量,因为非静态变量是每个实例特有的。例如,计算圆面积的方法可以是静态的,因为它不依赖于特定的圆实例。
4. **单子模式**:`static`关键字在实现单例设计模式时也很常见,确保类只有一个实例存在。
5. **main方法**:程序的入口点`main`方法就是静态的,这允许我们在没有创建任何对象的情况下启动程序。
**final关键字**:`final`关键字用于声明不可改变的变量或方法,一旦赋值后就不能再更改。
**抽象类(abstract关键字)**:抽象类不能被实例化,它们用于定义一个类的接口,但不提供具体实现。子类必须实现所有抽象方法才能成为可实例化的类。
**接口(interface关键字)**:接口是完全抽象的,包含常量和抽象方法,用于实现多继承和定义特定的行为规范。
**内部类**:内部类是嵌套在另一个类中的类,它可以访问外部类的所有成员,包括私有成员。
总结来说,`static`关键字是Java中一个核心的概念,它允许我们创建类级别的变量和方法,这些元素与类的实例无关,而是直接与类本身关联。了解并正确使用`static`关键字对于理解和编写高质量的Java代码至关重要。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2014-06-26 上传
2014-03-28 上传
2014-06-26 上传
2018-05-29 上传
2018-08-30 上传
getsentry
- 粉丝: 28
- 资源: 2万+
最新资源
- C语言数组操作:高度检查器编程实践
- 基于Swift开发的嘉定单车LBS iOS应用项目解析
- 钗头凤声乐表演的二度创作分析报告
- 分布式数据库特训营全套教程资料
- JavaScript开发者Robert Bindar的博客平台
- MATLAB投影寻踪代码教程及文件解压缩指南
- HTML5拖放实现的RPSLS游戏教程
- HT://Dig引擎接口,Ampoliros开源模块应用
- 全面探测服务器性能与PHP环境的iprober PHP探针v0.024
- 新版提醒应用v2:基于MongoDB的数据存储
- 《我的世界》东方大陆1.12.2材质包深度体验
- Hypercore Promisifier: JavaScript中的回调转换为Promise包装器
- 探索开源项目Artifice:Slyme脚本与技巧游戏
- Matlab机器人学习代码解析与笔记分享
- 查尔默斯大学计算物理作业HP2解析
- GitHub问题管理新工具:GIRA-crx插件介绍