Java final修饰的变量
来源:互联网 发布:合成照片软件app 编辑:程序博客网 时间:2024/05/21 14:52
看到这个帖子
http://bbs.csdn.net/topics/390706923?page=1#post-396731885
我试了下下面这个程序
public class ceshi { public static final String A = "ab"; public static final String B = "cd"; public static String C = "ab"; public static String D = "cd"; public static void main(String[] args) { String s = A + B; String t = "abcd"; String a = C + D; final String E = "ab"; final String F = "cd"; String b = E + F; System.out.println(s == t); System.out.println(t == a); System.out.println(b == t); }}
输出
说明final修饰的变量会在编译的时候被当成常量处理。
再看帖子中奇葩的第二个例子
public class ceshi2 { public static final String A; public static final String B; static { A = "ab"; B = "cd"; } public static void main(String[] args) { String s = A + B; String t = "abcd"; System.out.println(s == t); }}输出
我的理解是这样的:
第一个例子输出为true,是因为第一种写法在编译期间就可以确定String s的值了,因为A,B都是用final修饰的。所以String s会放到常量池
而第二个例子中A,B都是放在静态初始化块中的,静态初始化块是当这个类第一次被JVM加载的时候执行的。
而第一次被JVM加载是运行时的时候了,所以不会放到常量池中。所以为false.
0 0
- Java final修饰的变量
- [java]final修饰变量
- java中final修饰的局部变量
- Java中用final修饰的变量
- java中final可以修饰的变量
- final修饰的变量
- java final static 与final 修饰变量的区别
- Java之final修饰变量
- final修饰变量的问题
- java中,final 修饰的String 变量与未修饰的String变量的区别
- java final修饰成员变量赋值的二种方法
- java的final关键字——修饰变量
- 关于Java Final 修饰的局部变量,多线程可以访问
- Java final修饰类/方法/变量的特点
- java面试题:final修饰局部变量的问题
- JAVA局部变量加final修饰的好处
- java的final关键字——修饰变量
- final修饰变量 与Stastic修饰的变量
- 八皇后位运算解 N-Queen II Leetcode
- HashCode与HashSet
- 开发智力
- ios sqlite数据库的基本操作
- tomcat的管理程序
- Java final修饰的变量
- ExtJs 自定义Vtype验证
- MFC文件遍历类CFileFind例程
- storyboard 学习笔记(一)
- 美国传奇童星-秀兰-邓波儿
- myeclipse的编译和运行环境不一样引发webService异常
- 使用 HTML5 数据库和离线功能
- response header 设置 限速
- NYOJ 108 士兵杀敌(一)