首页 > 编程 > Java > 正文

java--01--final

2019-11-09 20:56:46
字体:
来源:转载
供稿:网友
class TextDemo { static { System.out.PRintln("静态初始化块。。。"); } static **final** String compileConstant="疯狂java讲义";}public class TextDemo_01{ public static void main(String[] args){ System.out.println(TextDemo.compileConstant); }}

这里写图片描述

class TextDemo { static { System.out.println("静态初始化块。。。"); } static String compileConstant="疯狂Java讲义";}public class TextDemo_01{ public static void main(String[] args){ System.out.println(TextDemo.compileConstant); }}

这里写图片描述

如果仔细 看两个差不多的程序就会发现,在第一个程序中的在类变量前面加了final修饰,在main方法中调用时,静态初始化代码块中的输出没有执行,发现TextDemo类没有初始化,但是在第二段程序中的compileConstant没有加final修饰,却执行了静态初始化代码块。查资料得知,对于一个final型的类变量,如果该类变量的值在编译时就可以确定下来,那么这个类变量就相当于宏变量,java编译器会在编译时直接把这个类变量出现的地方替换成它的值,因此即使程序使用该静态类变量,也不会导致该类的初始化。欢迎补充。。。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表