Java中的final与static关键字详解
需积分: 9 49 浏览量
更新于2024-08-05
收藏 8KB MD 举报
本文档主要讨论了Java中的`final`和`static`两个关键字,以及它们在修饰类、方法和变量时的作用。
## 1. final关键字
### 1.1 final关键字概述
`final`在Java中表示“最终”的意思,它可以用于修饰类、方法和变量。使用`final`关键字后,它所修饰的元素具有以下特性:
- **修饰类**:被`final`修饰的类不能被其他类继承,这样的类被称为“太监类”或“最终类”,确保其无法有子类。
- **修饰方法**:`final`修饰的方法不能被子类重写,这保证了方法的行为在继承链中保持一致。
- **修饰变量**:`final`修饰的变量一旦赋值后就不能再更改。对于基本类型,这意味着值不可变;对于引用类型,意味着引用不能指向新的对象(即地址值不变),但被引用的对象内部状态仍然可以改变。
```java
public class Demo02修饰变量 {
public static void main(String[] args) {
// 创建学生对象
final Student s = new Student();
s.name = "柳岩";
s.age = 36; // 修改姓名与年龄
s.name = "老王"; // 重命名可行
s.age = 40; // 变量值可变,只要不改变引用
// 下面这行会报错,因为s是final的,不能重新赋值
// s = new Student();
}
}
```
## 2. static关键字
### 2.1 static概述
`static`关键字用于修饰类的成员(包括变量和方法)。被`static`修饰的成员属于类本身,而不属于类的实例。这意味着:
- **静态成员共享**:所有类的实例都可以共享静态成员,它们只存在一个副本,不会因为创建新对象而产生额外的副本。
- **访问方式**:静态成员可以通过类名直接访问,无需创建对象。通常建议使用类名访问静态成员,以避免混淆和提高代码可读性。
```java
public class Student {
String name; // 姓名
int age; // 年龄
// 所有的学生都是中国国籍,如果定义成员变量每个对象需要单独赋值有点麻烦
// 想要让多个对象共享同一个国籍就可以定义成静态变量
static String country; // 国籍
}
public class Demo静态的演示 {
public static void main(String[] args) {
// 创建学生对象
Student s = new Student();
s.name = "柳岩";
s.age = 36;
// 建议使用类名访问静态变量,不建议使用对象名访问静态变量
// s.country = "中国";
Student.country = "中国"; // 创建学生
Student s2 = new Student();
s2.name = "大鹏";
// ...
}
}
```
在上述代码中,`Student`类的`country`字段被声明为`static`,因此所有`Student`对象都共享同一个国籍。在`main`方法中,我们通过`Student.country`来设置和访问这个共享属性,而不是通过特定的实例对象。
总结起来,`final`和`static`都是Java中重要的修饰符,它们分别用于确保变量的不可变性和类成员的共享性。理解并恰当使用这两个关键字对于编写健壮、高效的Java代码至关重要。
2018-03-16 上传
2018-03-06 上传
点击了解资源详情
点击了解资源详情
2023-06-02 上传
2023-04-03 上传
2024-04-26 上传
2023-06-09 上传
qq_46065933
- 粉丝: 0
- 资源: 2
最新资源
- Hadoop生态系统与MapReduce详解
- MDS系列三相整流桥模块技术规格与特性
- MFC编程:指针与句柄获取全面解析
- LM06:多模4G高速数据模块,支持GSM至TD-LTE
- 使用Gradle与Nexus构建私有仓库
- JAVA编程规范指南:命名规则与文件样式
- EMC VNX5500 存储系统日常维护指南
- 大数据驱动的互联网用户体验深度管理策略
- 改进型Booth算法:32位浮点阵列乘法器的高速设计与算法比较
- H3CNE网络认证重点知识整理
- Linux环境下MongoDB的详细安装教程
- 压缩文法的等价变换与多余规则删除
- BRMS入门指南:JBOSS安装与基础操作详解
- Win7环境下Android开发环境配置全攻略
- SHT10 C语言程序与LCD1602显示实例及精度校准
- 反垃圾邮件技术:现状与前景