自己总结得final和static

本文探讨了final和static修饰符在Java中的不同用途。final用于确保变量或对象的不可变性,而static则用于创建所有实例共享的数据成员。文中还讨论了static final修饰符在创建常量时的应用。

 

使用final修饰基本类型时必须初始化(定义时或在构造器中),并且初始化后值就无法改变;而在修饰类类型时也必须初始化(定义时或在构造器中),且初始化的引用无法改变,但是对象的属性可以改变。

         static表示该类型的所有对象共用一个存储区域,一般在可以不生成对象而直接通过类名调用,在static修饰的方法中只能使用static 修饰的属性。

         所以,final static 还是有蛮大的区别,简单的说就是:前者初始化后无法再改变其值,但是所属类的每个对象都有一份;而后者可以改变其值,但是所属类的对象是共用一份。

         static  final int表示编译时期即确定的常变量而final修饰的则在运行时菜确定,和一般的常量起的作用一样;但是,使用常变量增加了程序的可读性。

 

内容概要:本文系统介绍了标准化软件知识产权的基础知识,涵盖标准化的基本概念、分类、标准代号、国际标准的采用原则及程度,重点讲解了信息技术标准化、ISO与IEC等国际标准化组织以及ISO9000ISO/IEC15504等重要标准体系;在知识产权部分,详细阐述了知识产权的定义、分类及特点,重点分析了计算机软件著作权的主体、客体、权利内容、行使方式、保护期限及侵权认定,同时涉及商业秘密的构成与侵权形式、专利权的类型与申请条件,以及企业如何综合运用著作权、专利、商标商业秘密等方式保护软件知识产权。; 适合人群:从事软件开发、项目管理、IT标准化或知识产权相关工作的技术人员与管理人员,以及备考相关资格考试的学习者;具备一定信息技术背景,希望系统掌握标准化与软件知识产权基础知识的专业人员。; 使用场景及目标:①帮助理解各类标准的分类体系及国际标准采用方式,提升标准化实践能力;②指导企业在软件研发过程中有效保护知识产权,规避法律风险;③为软件著作权登记、专利申请、技术保密等提供理论依据操作指引。; 阅读建议:建议结合国家相关政策法规实际案例进行深入学习,重点关注软件著作权与专利权的适用边界、标准制定流程及企业知识产权管理策略,强化理论与实践的结合。
在 Java 中,`final` `static final` 是两个关键字的组合,它们分别具有不同的语义用途。理解它们的区别需要从它们各自的作用范围特性入手。 ### 1. `final` 关键字 #### 变量 当一个变量被声明为 `final` 时,它表示该变量一旦被赋值后就不能再被修改。这意味着它可以用来定义常量,但也可以延迟初始化(即所谓的“final 空白”),只要确保在使用前完成初始化即可 [^3]。 ```java public class Example { private final int value; public Example(int value) { this.value = value; // 延迟初始化 } } ``` #### 方法 如果一个方法被标记为 `final`,那么它不能被子类重写(覆盖)。这对于防止继承类改变某些关键行为非常有用 [^1]。 ```java public class Parent { public final void doSomething() { System.out.println("Parent's implementation"); } } public class Child extends Parent { // 以下代码会导致编译错误 // public void doSomething() { ... } } ``` #### 类 如果一个类被声明为 `final`,则这个类不能被继承。这通常用于设计不可变的对象或者出于安全考虑 [^1]。 ```java public final class FinalClass { // ... } // 以下代码会导致编译错误 // public class SubClass extends FinalClass { ... } ``` ### 2. `static final` 组合 `static final` 是 `static` `final` 的组合,它的含义是 **静态常量**。与普通的 `final` 不同的是,`static final` 修饰的变量属于类而不是实例,并且必须在声明时或通过静态初始化块进行初始化。 ```java public class Constants { public static final double PI = 3.14159; } ``` 由于它是静态的,因此可以通过类名直接访问,而不需要创建对象: ```java double circumference = 2 * Constants.PI * radius; ``` 此外,`static final` 常用于定义类级别的常量,这些常量在整个应用程序中保持不变,比如数学常数、配置参数等 [^4]。 ### 区别总结 | 特性 | `final` | `static final` | |------|---------|----------------| | 初始化方式 | 可以在声明时或构造函数中初始化 | 必须在声明时或静态初始化块中初始化 | | 实例/类级别 | 属于实例 | 属于类 | | 修改权限 | 赋值后不可修改 | 赋值后不可修改 | | 访问方式 | 通过对象访问 | 通过类名访问 | | 应用场景 | 对象内部的不可变状态 | 全局共享的常量 | ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值