对与java中的final变量,java编译器是进行了优化的。每个使用了final类型变量的地方都不会通过连接而进行访问。比如说Test类中使用了Data类中一个final的int数字fNumber=77,这时候,java编译器会将77这个常数编译到Test类的指令码或者常量池中。这样,每次Test类用到fNumber的时候,不会通过引用连接到Data类中进行读取,而是直接使用自己保存在类文件中的副本。

用程序说话:

Test.java:

public class Test{

public static void main(String[] args){

System.out.println(Data.fNumber);

}

}

Data.java:

public class Data{

public static final int fNumber=77;

}

执行命令和结果:

Microsoft Windows XP [版本 5.1.2600]

(C) 版权所有 1985-2001 Microsoft Corp.

C:/Documents and Settings/zangmeng>cd ..

C:/Documents and Settings>cd ..

C:/>javac Test.java

C:/>java Test

77

C:/>

这时候,我们更改Data.java的内容:

public class Data{

public static final int fNumber=777;

}

然后执行如下命令:

C:/>javac Data.java

C:/>java Test

77

C:/>

这里我们看到,虽然Data.java中的fNumber已经更改为777,而且已经重新编译了,但是因为编译器把fNumber的副本保存Test类中,所以在重新编译Test类的前,Test类一直把fNumber认为是77而不是777。下面我们变异Test.java,再执行,看看结果。

C:/>javac Test.java

C:/>java Test

777

C:/>

这时候,我们看到,重新编译的Test类将新的777数值封装到了自己类中。

整个过程如下:

Microsoft Windows XP [版本 5.1.2600]

(C) 版权所有 1985-2001 Microsoft Corp.

C:/Documents and Settings/zangmeng>cd ..

C:/Documents and Settings>cd ..

C:/>javac Test.java

C:/>java Test

77

//在这里改变了Data.java的内容

C:/>javac Data.java

C:/>java Test

77

C:/>javac Test.java

C:/>java Test

777

C:/>

final变量存在哪 java_使用Java中的final变量需要注意的地方。相关推荐

  1. java final 变量 好处_深入理解Java中的final关键字

    Java中的final关键字非常重要,它可以应用于类.方法以及变量.这篇文章中我将带你看看什么是final关键字?将变量,方法和类声明为final代表了什么?使用final的好处是什么?最后也有一些使 ...

  2. java final修饰符_浅谈JAVA中的final修饰符

    final修饰符是JAVA中比较简单的一个修饰符,很多人通过书本就可以熟练掌握,但我学的时候,虽然感觉会用了,但是并不是十分理解这个修饰符,所以我找了相关资料,把我的个人理解分享给大家~~ final ...

  3. fianl属性 java_在Java中使用Final关键字可以提高性能吗?

    是的可以.下面是一个最终可以提高性能的实例: 条件编译是一种技术,在这种技术中,代码行不会根据特定条件编译到类文件中.这可用于删除生产生成中的大量调试代码. 考虑以下几点:public class C ...

  4. [转载] Java中的final变量、final方法和final类

    参考链接: Java中的final数组 | Final arrays 1.final变量 final关键字可用于变量声明,一旦该变量被设定,就不可以再改变该变量的值.通常,由final定义的变量为常量 ...

  5. java中为final变量赋值的几种方式

    java中为final变量赋值的几种方式 前言 使用final修饰变量,很多人第一时间想到的就是不可变.然后以为变量必须得在声明的时候就为其赋初始值,其实不然,本文将详细讲解java中使用final修 ...

  6. java final 类_在Java中,final修饰的类有什么特点

    展开全部 关于Java中的32313133353236313431303231363533e4b893e5b19e31333264663736final(2010-09-09 14:19:48)转载▼ ...

  7. 浅谈Java中的final关键字

    浅析Java中的final关键字 谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字.另外,Java中的String类就是一个final类,那么今天我们就来 ...

  8. 浅析Java中的final关键字

    浅析Java中的final关键字 谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字.另外,Java中的String类就是一个final类,那么今天我们就来 ...

  9. 深入理解Java中的final关键字

    深入理解Java中的final关键字 http://www.importnew.com/7553.html Java中的final关键字非常重要,它可以应用于类.方法以及变量.这篇文章中我将带你看看什 ...

最新文章

  1. 判断元素是否在ndarray_暨南大学药学院考研~手性的判断与相关介绍
  2. 第二章:2.1 微分方程、差分方程求解(举例)
  3. Nginx的rewrite之if指令(二)
  4. 服务器配置 | 3306端口被占用,phpStudy无法启动Apache
  5. Mac/Linux 安装联邦学习 Fate 框架单机部署所需的依赖(填坑大全)
  6. 编写 Window 服务程序
  7. 延时队列的几种实现方式(只有原理,并没有源码)
  8. 【STM32H7的DSP教程】第17章 DSP功能函数-定点数互转
  9. 萌宠经济升温,宠物摄影师成为热门新职业-捷径系统
  10. android多个module打包aar,android 多module打包aar
  11. windows下,查看apk的包名、以及查找appActivity(aapt命令)
  12. JS人民币小写金额转换为大写(没毛病)
  13. 项目4.1 -- 广义表的原子统计
  14. 特岗计算机老师年度总结,特岗教师工作总结
  15. python实现局域网攻击软件_使用python的scapy库进行局域网内的断网攻击(基于ARP协议)...
  16. 啤酒游戏及其牛鞭效应的模拟之二级模式
  17. 抓取Foursquare网页信息的爬虫
  18. ES5、ES6自学笔记
  19. php性能测试xhprof,Xhprof php性能测试工具用法小结
  20. “DT时代”的十位创业“女侠”:黑科技不只是男人的玩物

热门文章

  1. Struts 2.0相关知识 摘自Struts2权威指南(李刚 著)
  2. 爱奇艺黄金VIP会员怎么免费领取升级星钻VIP会员在电视上看奇异果TV?
  3. 修改activityMQ的登录账与密码
  4. 戴尔灵越笔记本电脑蓝牙消失问题解决办法 2021 9 9
  5. 【2023新书】《ChatGPT在做什么…以及它为什么好使》
  6. 修改IPQ4019/4018的MTD分区
  7. J2EE基础教程(1):简介和windows下环境配置
  8. java读取配置文件信息生成Map对象
  9. scrapy 实战练习
  10. 下载安装WindowBuilder插件教程