finalkeyword对JVM类载入器的影响
2024-08-26 12:26:07
众所周知,当訪问一个类的变量或方法的时候。假设没有初始化该类。就会先去初始化一个类
可是,当这个类的变量为final的时候,就不一定了
请看以下的样例
package com.lala.shop; import java.util.Random; public class App
{
public static void main(String[] args)
{
System.out.println(User.c);
}
}
class User
{
public static final int b = new Random().nextInt(11);
public static final int c = 20;
static
{
System.out.println("user static init ...");
}
}
当訪问
System.out.println(User.c);
的时候,没有输出 "user static init ..."
由于c是static final变量。且它等于20。在编译的时候就能够知道它的值。所以直接訪问a的值不会引起User类的初始化
当訪问
System.out.println(User.b);
的时候。就输出"user static init ..."
这个static final变量b由于在编译的时候无法知道它的确切的值。所以仅仅有等到执行的时候才干知道,所以自己訪问
User.b会引起User类的初始化。也就是static静态代码快的载入
最新文章
- 使用InstallAnywhere工具打包Java_Web程序
- 如何打开 系统信息窗体和 DirectX诊断工具
- ListView下拉加载一(分页)
- java提高篇(十)-----详解匿名内部类
- eclipse打开jar包出现乱码问题解决方法
- spark sql cache
- hihoCoder 数论五·欧拉函数
- Android实现图片裁切
- mycat表拆分操作教程
- 数据结构(线段树):CodeForces 85D Sum of Medians
- C# 文件/文件夹压缩
- POJ 3126 Prime Path(BFS 数字处理)
- 网络爬虫之定向爬虫:爬取当当网2015年图书销售排行榜信息(Crawler)
- FCC(ES6写法) Inventory Update
- vue实现点击展开,点击收起
- ubuntu下安装配置apache2与php
- js没有函数重载
- Windows 下最佳的 C++ 开发的 IDE 是什么?
- java Concurrent包学习笔记(五):Semaphore
- windows下apk查看工具的原理