java final 学习
来源:互联网 发布:手机接单软件 编辑:程序博客网 时间:2024/05/16 05:57
我们在java中经常会用到final这个修饰符,说是用来表示不可变的,经常和static这个变量一起用来修饰类,方法,属性
下面我们来讲讲使用final修饰属性以后对编译的结果是什么
下面的代码是我手动敲的
按理说编译成class文件以后反编译应该是和这个文件是相同的,那么我们看一下反编译以后的结果:
发现了么,输出的地方使用静态的常量和final修饰的常量是不一样的,这是为什么?应该是STRING2才对不是么?是不是很意外
时间太晚了不在做深入的研究,有时候替换一些class文件对于final修饰的常量要注意啊
然后我突然想了下,如果在静态代码块中在对final修饰的常量进行赋值呢
下面是对class反编译的结果
发现没有,这里引用的就是常量的名称,而不是里面实际的代码串
然后我就在想,那么final修饰的变量可以在构造方法中赋值么
结果是不可以的
为什么会出现不同的结果原因找到了,是因为如果直接这样定义String s ="aaa",在编译的过程中java虚拟机会进行优化,把这些东西放到栈中(不知道是不是这样),所以下面反编译的时候引用到s的地方反编译过来全部都是"aaa",但是如果在static代码块中进行赋值的话,java虚拟机是不知道这个变量的赋值是什么,只能使用s来完成对其的引用
0 0
- java学习笔记-final
- Java学习:final
- JAVA学习--final用法
- Java学习·final
- Java学习-final
- java final 学习
- java学习之final关键字
- Java学习--static、final、abstract
- Java学习之final关键词
- 个人学习-java-final关键字
- java学习笔记-final关键字
- java学习之final关键字
- java基础学习之final
- Java学习之final关键字
- java学习 十二、关键字final
- Java学习11:final关键字
- java学习笔记 static,final关键字学习
- 【Java学习】java中final的用法
- 使用Nexus搭建Maven私服
- 数据结构第一次实验——顺序表、栈
- Oracle Sqlplus中上下键出现^[[A乱码问题
- 搭建hadoop伪分布式(二)
- 贪心入门题——木棍
- java final 学习
- H5学习笔记
- 集合框架-TreeSet保证元素唯一性和自然排序的原理和图解
- CentOS配置163源
- linux文件只有读、写,没有执行权限 怎么加
- C++ 返回指向数组指针的函数
- Java 设计模式情景分析——装饰模式
- activex 使用与注册
- populating-next-right-pointers-in-each-node-ii(二叉树每层用指针链接)