`
freshman0
  • 浏览: 9401 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

final需要主要的地方

    博客分类:
  • java
阅读更多

1.   final使得被修饰的变量"不变",但是由于对象型变量的本质是"引用",使得"不变"也有了两种含义:引用本身的不变;还是引用指向的对象不变?

   a 引用本身的不变:

final StringBuffer a=new StringBuffer("immutable");  
final StringBuffer b=new StringBuffer("not immutable");  
a=b;//编译期错误

  b引用指向的对象不变:

final StringBuffer a=new StringBuffer("immutable");  
a.append(" broken!"); //编译通过 

由此可见,final只对引用的“值”(也就是他所指向的那个对象的内粗地址)有效,它迫使引用只能指向初始指向的那个对象,改变它的指向会导致编译器错误。至于他所指向的对象的变化,final是不负责的。

 

    对于类变量,java虚拟机会自动进行初始化。如果给出了初始值,则初始化为该初始值。如果没有给出,则把它初始化为该类型变量的默认初始值。但是对于用final修饰的类变量,虚拟机不会为其赋予初值,必须在constructor(构造器)结束之前被赋予一个明确的值,否则在编译期间会报错。

分享到:
评论

相关推荐

    java面向对象之final修饰符.docx

    Java中的final关键字在面向对象编程中扮演着重要的角色,它主要用于修饰类、变量和方法,确保它们在程序运行过程中不可改变或不可重写。以下是对final修饰符的详细解释: 一、final修饰变量 1. 当final修饰成员...

    FinalData绿色中文企业版

    下面将详细阐述FinalData的主要特点、工作原理以及如何使用它来恢复数据。 1. 主要特点: - **全面扫描**:FinalData能深度扫描磁盘上的每个扇区,找出已被标记为删除但尚未被新数据覆盖的数据。 - **兼容性强**...

    Java并发--final关键字.docx

    2. **方法重载**:`final`修饰的方法可以与其他方法重载,因为重载主要基于方法名和参数列表,而不考虑访问修饰符或`final`修饰。 **三、final修饰类** 1. **防止继承**:如果一个类被`final`修饰,意味着它不能被...

    FlashFXP V4.2.5 Build 1813 Final 烈火汉化绿色版

    FlashFXP是一款非常知名的FTP(File Transfer Protocol)客户端软件,主要功能是用于在本地计算机与远程服务器之间进行文件传输。它的V4.2.5 Build 1813 Final版本是一个稳定且经过烈火汉化的版本,这意味着它已经被...

    11【final、权限、内部类】1

    在Java编程语言中,`final`是一个非常重要的修饰符,它有三个主要的应用场景:修饰类、修饰方法和修饰变量。 1. 修饰类:当一个类被`final`修饰时,该类不能被其他类继承。这意味着它的特性是封闭的,无法通过子类...

    USB over Network v4.7.4 Final

    USB over Network的主要功能是解决在不同网络环境或地理位置下共享USB设备的问题。例如,如果你在办公室有一台装有特殊硬件设备的电脑,但你需要在家中或远程工作时使用这些设备,这款软件就能派上用场。它创建了一...

    mymps1.0final-gbk-20090905

    《mymps1.0final-gbk-20090905》是一款基于PHP语言开发的城市信息管理系统,主要用于构建地方门户、分类信息网站。这个版本发布于2009年9月5日,采用GBK编码,是MyMPS系统的早期稳定版本。下面将详细介绍这个系统的...

    Import REConstructor v1.6 FINAL

    "Import REConstructor v1.6 FINAL" 是一个专门用于逆向工程的工具,它在IT领域主要用于软件分析、漏洞挖掘和代码理解。逆向工程是一种技术,通过它,开发人员可以理解和探索软件的工作原理,即使这些软件是用闭源...

    TorrentTrader-2.08-FINAL.zip

    这个软件的主要目的是实现一个高效、可定制的P2P文件分享系统,它允许用户交换大文件,如电影、音乐、软件等。BT技术利用分散的网络节点,通过多点对多点的方式进行数据传输,提高了文件下载的效率和稳定性。 核心...

    jeecms-2.3.2-final-db oracl建库脚本

    首先,我们需要了解MySQL和Oracle数据库之间的主要差异。MySQL属于开源的关系型数据库管理系统,以其简洁的SQL语法、高性能和易于管理而广受欢迎。Oracle则是一款功能强大的企业级数据库系统,提供了更高级的安全性...

    JavaSE基础:多态、final关键字-27

    public成员可以在任何地方访问,protected成员可以在同一包内或子类中访问,默认(包级私有)的成员只在同包内可见,而private成员只能在定义它的类内部访问。访问控制权限的设计有助于保护类的内部实现,防止不适当...

    微机原理final.zip

    9. **计算机性能指标**:衡量计算机性能的主要指标有运算速度(时钟频率)、存储容量、指令执行效率等。 10. **数字系统的基本概念**:包括二进制、八进制、十六进制转换,以及二进制运算规则、编码方式(如ASCII码...

    jboss-as-7.1.1.Final

    首先,让我们详细了解JBoss AS 7.1.1.Final的主要组成部分: 1. **applclient**: 这个目录包含了应用客户端的相关文件,使得用户可以通过远程接口连接到运行在JBoss AS上的应用程序。这里通常包括客户端所需的JAR...

    java多线程关键字final和static详解

    final修饰的实例变量可以在三个地方进行赋值:显示初始化、构造代码块和构造方法,并且仅能赋值一次。例如: public class MyClass { private final int value; public MyClass() { value = 10; } } 在上面的...

    Java中局部内部类可以访问它所在方法中定义的final修饰的局部变量的合理解释.doc

    本文主要探讨的是局部内部类如何访问其所在方法中定义的final修饰的局部变量,并给出详细的解释。 #### 关键概念解析 1. **局部内部类(Local Inner Class)** - 定义于某个方法或构造器内部的类。 - 只能在该方法...

    Java中static、this、super、final用法

    在Java编程语言中,`static`是一个非常重要的关键字,它主要用于定义类成员(包括变量和方法),使得这些成员能够在不创建类实例的情况下被访问。 **1.1 静态方法** - **定义**: 当在一个类中定义一个方法为`...

    面向对象修饰符public private protest super final abstract理解

    在这个例子中,`name`和`age`都是公开的,可以在任何地方被访问。`getName()`和`getAge()`也是公开的方法,用于获取属性值。 ### 2. `private` `private`是限制最严格的访问修饰符,意味着只有定义它的类才能访问被...

    FlashFXP (FTP工具)V3.6 Final 绿色美化版

    FlashFXP是一款功能强大的FTP客户端软件,主要用于在本地计算机与远程服务器之间进行文件传输。FTP,全称为File Transfer Protocol(文件传输协议),是互联网上一种广泛使用的标准协议,用于在不同网络之间交换文件...

    hibernate-release-4.1.9.Final.zip

    2. 懒加载(Lazy Loading):对象的关联关系在需要时才加载,提高性能。 3. 自动更新(Automatic Updates):当对象状态改变时,Hibernate会自动同步到数据库。 4. 回滚(Rollback):事务回滚,用于错误恢复或撤销...

    Inet Download Manager 6.38.14 Final.zip

    IDM通过集成FTP支持,使得用户能够方便地从FTP服务器下载文件,这对于开发者、设计师以及需要频繁处理大文件的用户来说极其便利。它提供了断点续传的功能,即使在下载过程中因网络问题中断,也能从上次停止的地方...

Global site tag (gtag.js) - Google Analytics