### Java关键字final、static使用总结 #### 一、final关键字详解与应用 在Java语言中,`final`关键字被广泛应用于各种场景,如定义不可变的变量、禁止类的继承等,具有重要的作用。 1. **final修饰变量** - `final`用于修饰变量时,该变量将变为常量,其值一旦初始化后便不能再更改。 - 如果是基本数据类型(如int, double等),那么其值不能改变;如果是引用类型(如String, Object等),则对象的引用不能改变,但对象内部的状态仍然可以修改。 - 示例: ```java public class FinalExample { private final int number = 10; // 基本类型,无法改变值 private final String name = "Final"; // 引用类型,name的值不能改变,但name指向的对象可以修改 } ``` 2. **final修饰方法** - 使用`final`修饰的方法不允许被子类覆盖。 - 示例: ```java public class BaseClass { public final void print() { System.out.println("Base Class Method"); } } public class DerivedClass extends BaseClass { // 下面这行代码将导致编译错误,因为print()方法被声明为final // public void print() { // System.out.println("Derived Class Method"); // } } ``` 3. **final修饰类** - `final`修饰的类不能被继承。 - 示例: ```java public final class FinalClass { public void display() { System.out.println("Final Class"); } } // 下面这行代码将导致编译错误,因为FinalClass被声明为final // public class AnotherClass extends FinalClass { // } ``` 4. **注意事项** - 当一个方法或类被声明为`final`时,它们将失去继承和重写的能力,因此应当谨慎使用。 - `final`关键字对于提高代码的可读性和安全性有重要作用,但过度使用可能会限制软件的灵活性和扩展性。 #### 二、static关键字详解与应用 `static`关键字主要用于创建静态变量、静态方法以及静态内部类等,它们属于类而不属于对象,因此可以在不创建对象的情况下访问。 1. **static修饰变量** - `static`修饰的变量称为静态变量或类变量,它只有一份拷贝,为所有对象所共享。 - 示例: ```java public class StaticExample { private static int count = 0; public StaticExample() { count++; } public static int getCount() { return count; } } public static void main(String[] args) { StaticExample obj1 = new StaticExample(); StaticExample obj2 = new StaticExample(); System.out.println(StaticExample.getCount()); // 输出2 } ``` 2. **static修饰方法** - `static`修饰的方法称为静态方法,可以直接通过类名调用,而无需创建对象。 - 示例: ```java public class StaticMethodExample { public static void sayHello() { System.out.println("Hello from Static Method"); } } public static void main(String[] args) { StaticMethodExample.sayHello(); // 直接调用 } ``` 3. **static修饰块** - `static`块会在类加载时执行一次,通常用于初始化静态变量。 - 示例: ```java public class StaticBlockExample { private static int counter; static { counter = 100; System.out.println("Static block executed"); } public static int getCounter() { return counter; } } public static void main(String[] args) { System.out.println(StaticBlockExample.getCounter()); // 输出100 } ``` 4. **注意事项** - 静态成员属于类而非对象,因此不随对象的销毁而销毁。 - 使用`static`时要注意避免在静态上下文中使用非静态资源,因为此时非静态资源可能尚未初始化。 - 静态方法只能访问静态变量和调用静态方法。 `final`和`static`关键字在Java编程中有着非常重要的作用,合理地运用这些关键字可以帮助我们编写出更加健壮、高效、易于维护的程序。
- sunbeamact2012-06-04java基础知识,不错~
- chy9966332014-09-05java基础知识,不错~
- 粉丝: 15
- 资源: 35
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 5G SRM815模组原理框图.jpg
- T型3电平逆变器,lcl滤波器滤波器参数计算,半导体损耗计算,逆变电感参数设计损耗计算 mathcad格式输出,方便修改 同时支持plecs损耗仿真,基于plecs的闭环仿真,电压外环,电流内环
- 毒舌(解锁版).apk
- 显示HEX、S19、Bin、VBF等其他汽车制造商特定的文件格式
- 操作系统实验 Ucore lab5
- 8bit逐次逼近型SAR ADC电路设计成品 入门时期的第三款sarADC,适合新手学习等 包括电路文件和详细设计文档 smic0.18工艺,单端结构,3.3V供电 整体采样率500k,可实现基
- 操作系统实验 ucorelab4内核线程管理
- 脉冲注入法,持续注入,启动低速运行过程中注入,电感法,ipd,力矩保持,无霍尔无感方案,媲美有霍尔效果 bldc控制器方案,无刷电机 提供源码,原理图
- Matlab Simulink#直驱永磁风电机组并网仿真模型 基于永磁直驱式风机并网仿真模型 采用背靠背双PWM变流器,先整流,再逆变 不仅实现电机侧的有功、无功功率的解耦控制和转速调节,而且能实
- 157389节奏盒子地狱模式第三阶段7.apk