`
魏祖清
  • 浏览: 180372 次
  • 性别: Icon_minigender_1
  • 来自: 福建
社区版块
存档分类
最新评论

final应用说明

    博客分类:
  • java
 
阅读更多
1、final用在类上表示该类不能被继承

2、final用在方法上表示该方法不能被重写(override)

3、final用在变量上表示该变量一旦被赋值后它的值将不能被改变



对于final类型的成员变量的初始化方式

1、声明变量时直接赋值

2、在构造方法中完成赋值

3、对于static的final类型的成员变量,只能通过在变量声明时直接赋值,不能通过在构造方法中完成赋值,因为static的变量是优先于构造方法执行的,而static的final类型的成员变量在声明时有点特殊:不会被设置成默认的值(如int a;本应该在声明时会自动设置成默认的值"0")

4、对于final类型的引用变量来说,所谓的不能改变指的是该引用不能被改变,而不是该引用的内容不能被改变

在构造方法中完成赋值的注意点:

如果一个类有多个构造方法,那么必须在每个构造方法中对final类型的成员变量赋值,否则将通不过编译

java 代码

   1. package com.test;  
   2.  
   3. public class FinalTest {  
   4.       
   5.     private final int a;  
   6.     private String name;  
   7.       
   8.     public FinalTest()  
   9.     {  
  10.         //如果final成员变量未在声明时直接赋值,那么每个构造方法里必须要对它进行赋值,否则将通不过编译  
  11.         a = 3;  
  12.     }  
  13.       
  14.     public FinalTest(String name)  
  15.     {  
  16.         //如果final成员变量未在声明时直接赋值,那么每个构造方法里必须要对它进行赋值,否则将通不过编译  
  17.         a = 5;  
  18.         this.name = name;  
  19.     }  
  20.       
  21.     public static void main(String[] args){  
  22.         FinalTest ft = new FinalTest();  
  23.         FinalTest ft2 = new FinalTest("hello");  
  24.     }  
  25. }  


java 代码

   1. package com.test;  
   2.  
   3. public class FinalTest {  
   4.       
   5.     private static final int a = 3;  
   6.     //private final int a;  
   7.     private String name;  
   8.       
   9.     public FinalTest()  
  10.     {  
  11.         //如果final成员变量未在声明时直接赋值,那么每个构造方法里必须要对它进行赋值,否则将通不过编译  
  12.         //a = 3;  
  13.     }  
  14.       
  15.     public FinalTest(String name)  
  16.     {  
  17.         //如果final成员变量未在声明时直接赋值,那么每个构造方法里必须要对它进行赋值,否则将通不过编译  
  18.         //a = 5;  
  19.         this.name = name;  
  20.     }  
  21.       
  22.     public static void main(String[] args){  
  23.         FinalTest ft = new FinalTest();  
  24.         FinalTest ft2 = new FinalTest("hello");  
  25.     }  
  26. }  


java 代码

   1. package com.test;  
   2.  
   3. public class FinalTest {  
   4.       
   5.     private static final StringBuffer s = new StringBuffer();  
   6.     //private static final int a = 3;  
   7.     //private final int a;  
   8.     private String name;  
   9.       
  10.     public FinalTest()  
  11.     {  
  12.         //如果final成员变量未在声明时直接赋值,那么每个构造方法里必须要对它进行赋值,否则将通不过编译  
  13.         //a = 3;  
  14.     }  
  15.       
  16.     public FinalTest(String name)  
  17.     {  
  18.         //如果final成员变量未在声明时直接赋值,那么每个构造方法里必须要对它进行赋值,否则将通不过编译  
  19.         //a = 5;  
  20.         this.name = name;  
  21.     }  
  22.       
  23.     public static void main(String[] args){  
  24.         //此时可以通过编译,因为改变的只是引用内容,而不是引用的内存地址,但是如果这里的代码是 s = new StringBuffer();就通不过编译了,因为如果这样的话,s指向了新的引用地址,这是final所不允许的  
  25.         s.append("hello");  
  26. //      FinalTest ft = new FinalTest();  
  27. //      FinalTest ft2 = new FinalTest("hello");  
  28.     }  
  29. }  

分享到:
评论

相关推荐

    Final IK插件及开发说明.7z

    在游戏开发中,特别是在虚拟现实(VR)应用中,IK技术对于角色动作的真实感和交互性至关重要。这个压缩包包含Final IK的1.7和1.8两个版本,为开发者提供了不同的选择。 首先,我们来看Final IK 1.7版本。这个版本...

    Final Effects汉化插件

    为了更好地使用Final Effects插件,建议用户阅读“汉化.txt”文件,里面可能包含了关于汉化过程的说明、使用技巧以及可能遇到的问题解决方案。同时,持续关注插件的更新,因为开发者会不断修复已知问题,增加新功能...

    TMA-K08说明书final

    首先,文件的标题是《TMA-K08说明书final》,说明本文档是一份关于TMA-K08型张力传感器的使用说明书。其次,描述部分提到“科蒂张力传感器使用说明书”以及“TMA-K08张力传感器可同时连接两路信号,采用CPU智能化...

    FLOWSIC600操作说明中文版final.pdf

    此外还包含了关于为满足特殊应用而进行的系统能力、选项和配置方面的优化 的详细描述。 本手册覆盖了那些满足特定技术数据的标准应用。额外的信息以及针对特殊应 用的技术支持可以从 SICKMAIHAK 的代理处获得。...

    static、this、super、final的JAVA用法

    静态方法通常用于提供一些实用工具给应用程序中的其他类使用。在 Java 的类库中大量的静态方法正是出于此目的而定义的。 在 Java 中,静态方法可以直接使用类名来调用,例如 Simple.go()。静态方法的使用非常简单,...

    FINAL.EFFECTS插件

    《FINAL.EFFECTS插件在AE中的应用与详解》 FINAL.EFFECTS插件,简称FF,是一款在视频后期制作领域广泛使用的特效插件,专为Adobe After Effects(AE)设计,提供了丰富的视觉效果和创意工具,使得视频编辑者能够...

    final-final--final.rar_网络聊天

    "final-final--final.rar_网络聊天"可能是一个包含了用于构建网络聊天应用的相关资源和代码的压缩包。在这个压缩包里,我们有两个文件:www.pudn.com.txt 和 final-final--final。下面将详细探讨网络聊天系统的基础...

    Final IK 1.7 (2018-7-2最新版)

    总的来说,Final IK 1.7是Unity3D开发者的得力助手,它简化了复杂角色动画的制作流程,提高了工作效率,且其优秀的性能表现和广泛的功能应用,使得这一投资物超所值。对于那些致力于打造高品质游戏体验的开发者来说...

    FinalIK插件1.8,Unity最强大的IK插件

    压缩包中的“IK插件.txt”可能包含了关于如何安装、配置和使用FinalIK插件的详细说明,而“FinalIK1.8.unitypackage”则是实际的插件文件,可以直接导入到Unity项目中。导入后,开发者可以按照文档指导设置和调整IK...

    hibernate-release-5.0.7.Final的html文档说明

    通过阅读并实践"hibernate-release-5.0.7.Final"的HTML文档,开发者可以深入了解Hibernate的工作原理,熟练掌握ORM技术,从而更好地应用于实际项目中。文档详尽的解释和示例代码将帮助你快速上手,成为Hibernate的...

    BlackBerry 应用程序开发者指南-高级-final

    ### BlackBerry 应用程序开发者指南-高级-final #### 黑莓难得的开发指南,高级应用必备 本指南作为中文资源非常珍贵,对于那些希望深入掌握BlackBerry平台开发的程序员来说,这是一份不可或缺的参考资料。它不仅...

    Final Cut Pro 发布说明 - Apple 支持.pdf

    例如,10.5.2版本修复了在导入过程中应用防抖动和颜色平衡的稳定性,解决了片段重新定时后音频同步可能出现的偏移,增强了使用"智能符合"时对社交媒体内容定位的可靠性,以及在使用"屏幕裁剪"控制项时的稳定性。...

    netty-4.1.16.Final

    - **Javadoc文档**:这是Netty框架的官方API文档,详细记录了每一个类、接口和方法的使用说明,对于开发者理解和使用Netty非常有帮助。 - **源代码**:包含Netty框架的全部源码,便于开发者深入理解其工作原理,...

    Hibernate 3.6.10 final Release

    **Hibernate 3.6.10 Final Release:Java ORM框架的里程碑** Hibernate 是一个流行的开源对象关系映射(ORM)框架,它简化了Java应用程序与数据库之间的交互。在这个3.6.10最终版本中,Hibernate 提供了一个稳定且...

    WTL80_7161_Final

    1. **readme.htm** - 这通常是项目或库的说明文件,包含关于如何安装、配置和使用WTL80_7161_Final的重要信息。通常,它会概述更新内容、系统要求、已知问题以及可能的解决方案。 2. **CPL.TXT** - 这可能是一个...

    ollydbgv2.01Final.rar

    其中,Win32.chm是Windows 32位应用程序的帮助文件,包含关于如何使用Ollydbg的详细指南和教程,对于初学者来说是非常宝贵的资源。 dbghelp.dll是Microsoft调试帮助库,用于支持调试相关的函数和数据结构。它在...

    KiritoService_9.1.3_Final.7z

    《KiritoService_9.1.3_Final:深入解析与应用》 在IT领域,我们经常需要处理各种软件和服务,而“KiritoService_9.1.3_Final.7z”是一个特定的服务版本,它可能代表着一个经过优化和增强的软件组件。这个名为...

    root_ec6108v9u_final

    【标题】"root_ec6108v9u_final"所代表的知识点主要涉及的是对华为悦盒(Huawei Enjoy Box)的个性化定制和优化,尤其是涉及到设备的root权限获取和系统刷机流程。Root权限是指对设备操作系统拥有完全控制权,能够...

    hibernate-search-5.5.5.Final

    在这个5.5.5.Final版本中,我们看到一个稳定且成熟的解决方案,旨在提升企业级应用的数据查询性能。 首先,让我们理解Hibernate Search的核心概念。它基于Apache Lucene库,提供了与Hibernate ORM无缝集成的全文...

    netty-4.1.27.Final

    1. **netty-all-4.1.27.Final-javadoc**:这是Netty的Java文档,提供了所有API的详细说明。对于开发者来说,这是一个非常重要的资源,因为它可以帮助理解和使用Netty的各种类和方法,以便在项目中正确地集成和利用...

Global site tag (gtag.js) - Google Analytics