千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > static和final的区别是什么?

static和final的区别是什么?

来源:千锋教育
发布人:xqq
时间: 2023-10-15 09:02:37 1697331757

一、static关键字

static是一个用于修饰类成员的关键字,可以用于静态变量和静态方法。

1. 静态变量(静态属性): 使用static修饰的成员变量称为静态变量,也称为类变量。静态变量在类加载时被初始化,只有一个副本存在于内存中,并且所有该类的实例共享相同的静态变量。可以通过类名直接访问静态变量,无需创建对象。

2. 静态方法: 使用static修饰的方法称为静态方法。静态方法属于类而不属于对象,可以通过类名直接调用,无需创建对象。静态方法中只能访问静态成员变量,而不能访问非静态成员变量,因为非静态成员变量是属于对象的,而静态方法是属于类的。

注意:

静态方法中不能使用this关键字,因为this代表当前对象,而静态方法不属于任何对象。静态方法中不能使用super关键字,因为super代表父类对象,而静态方法与对象无关。

二、final关键字

final是一个用于修饰类、成员变量和方法的关键字。

1. final类: 使用final修饰的类称为final类。final类是不能被继承的,即不能有子类。通常用于确保类的完整性和安全性。

2. final成员变量(常量): 使用final修饰的成员变量称为final变量或常量。final成员变量必须在声明时或构造函数中进行初始化,并且一旦初始化后就不能再修改其值。常量通常用大写字母表示,并且在多个单词之间用下划线分隔。

3. final方法: 使用final修饰的方法称为final方法。final方法不能被子类重写,即不能被子类进行覆盖。通常用于确保方法的行为不会被子类修改。

注意:

final成员变量可以在声明时初始化,也可以在构造函数中初始化,但一旦初始化后就不能再修改。final方法不能被子类重写,但可以被继承。

三、区别和联系

作用范围: static用于修饰类成员(静态变量和静态方法),而final用于修饰类、成员变量和方法。关联性: static关键字是与类相关联的,可以通过类名直接访问静态成员。而final关键字是与类的实例相关联的,用于限制类、变量或方法的特性。修改能力: 静态变量可以被修改,其值可以在程序运行过程中发生变化。而final成员变量一旦被初始化后,其值不可再变更,成为常量。继承和重写: final修饰的类不能被继承,final修饰的方法不能被重写(覆盖),但static修饰的方法可以被重写,但不能被覆盖。

延伸阅读

Java中静态关键字的使用场景和注意事项

静态关键字(static)在Java中有着广泛的应用场景,但在使用时也需要谨慎考虑。以下是一些关于静态关键字的使用场景和注意事项:

1. 共享数据和工具方法: 静态变量和静态方法通常用于存储全局共享的数据和提供与类相关的工具方法。比如在工具类中定义一些常用的数学计算方法,或者在单例模式中使用静态变量保存少数的实例。

2. 常量: 在Java中,常量通常被声明为static final,表示它们是不可变且在类级别共享的。常量一般使用全大写命名,例如public static final int MAX_COUNT = 100;

3. 工厂方法: 静态方法常用于创建对象实例的工厂方法,它们可以隐藏对象的创建逻辑,提供更简洁的调用方式。

4. 静态内部类: 在一个类内部,可以使用static关键字来定义静态内部类。静态内部类不依赖于外部类的实例,可以单独创建实例。

5. 单例模式: 单例模式中的私有构造方法和静态方法保证了只有一个实例存在,并且可以在全局范围内访问该实例。

6. 类加载时机: 静态成员在类加载时初始化,因此可以在静态代码块中进行复杂的初始化操作。请注意静态块只在类加载时执行一次。

7. 多线程安全性: 静态方法是线程安全的,因为它们不依赖于实例变量。但需要注意,如果多个线程同时访问并修改同一个静态变量,可能导致线程安全问题,需要使用同步控制来保证线程安全。

8. 静态的局限性: 静态关键字会限制代码的灵活性,因为它们是与类绑定的,无法在继承过程中被覆盖。此外,静态关键字也增加了代码的耦合度,使得代码更难进行单元测试。

虽然静态关键字有诸多优点和使用场景,但过度使用静态变量和方法可能导致代码难以维护和理解。因此,在使用静态关键字时,需要权衡利弊,遵循良好的设计原则,确保代码的健壮性和可维护性。

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT