众所周知,当訪问一个类的变量或方法的时候。假设没有初始化该类。就会先去初始化一个类

可是,当这个类的变量为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静态代码快的载入

finalkeyword对JVM类载入器的影响的更多相关文章

  1. java类载入器——ClassLoader

    Java的设计初衷是主要面向嵌入式领域,对于自己定义的一些类,考虑使用依需求载入原则.即在程序使用到时才载入类,节省内存消耗,这时就可以通过类载入器来动态载入. 假设你平时仅仅是做web开发,那应该非 ...

  2. Java类载入器 ClassLoader的解析

    //參考 : http://www.ibm.com/developerworks/cn/java/j-lo-classloader/ 类载入器基本概念 类载入器是 Java 语言的一个创新,也是 Ja ...

  3. Java类载入器(一)——类载入器层次与模型

    类载入器   虚拟机设计团队把类载入阶段中的"通过一个类的全限定名来获取描写叙述此类的二进制字节流"这个动作放到Java虚拟机外部去实现.以便让应用程序自己决定怎样去获取所须要的类 ...

  4. Java类载入器(二)——自己定义类载入器

      用户定制自己的ClassLoader能够实现以下的一些应用: 自己定义路径下查找自己定义的class类文件,或许我们须要的class文件并不总是在已经设置好的Classpath以下,那么我们必须想 ...

  5. Tomcat类载入器机制(Tomcat源代码解析六)

    要说Tomcat的Classloader机制,我们还得从Bootstrap開始.在BootStrap初始化的时候.调用了org.apache.catalina.startup.Bootstrap#in ...

  6. 黑马程序猿——Java中的类载入器

    ------- android培训.java培训.期待与您交流! -------- 类载入器 Java虚拟机中能够安装多个类载入器,系统默认三个主要类载入器,每一个类负责载入特定位置的类: BootS ...

  7. Java类载入器原理分析

    一:Java虚拟机中能够安装多个类载入器,系统默认是三个基本的类载入器: Bootstrap  ExtClassLoader  AppClassLoader 类载入器也是Java类.由于其它Java类 ...

  8. Jboss7类载入器

    1. 类载入器理论知识介绍 类载入器基于Jboss Module,代替了层次类载入环境,避免了当类存在多个版本号时,导致类载入错误. 类载入是基于模块的.必须显示的定义模块依赖.部署也是模块化的,假设 ...

  9. Java类载入器

    1.   系统载入器简单介绍 Java虚拟机中能够安装多个类载入器,系统默认三个主要类载入器(BootStrap.ExtClassLoader.AppClassLoader).每一个类载入器负责载入特 ...

随机推荐

  1. 洛谷 P1705 爱与愁过火

    P1705 爱与愁过火 题目背景 (本道题目隐藏了两首歌名,找找看哪~~~) <爱与愁的故事第一弹·heartache>第三章. 爱与愁大神说这是ta的伤心指数,只不过现在好很多了,翻译只 ...

  2. hdu 5312 Sequence(数学推导——三角形数)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5312 Sequence Time Limit: 2000/2000 MS (Java/Others)  ...

  3. 谈谈 .NET Reflector

    著名的 .NET Reflector 如今要收费了,价格还不低: .NET Reflector Standard: $95 .NET Reflector VS: $195 .NET Reflector ...

  4. elasticsearch index 功能源码概述

    从本篇开始,对elasticsearch的介绍将进入数据功能部分(index),这一部分包括索引的创建,管理,数据索引及搜索等相关功能.对于这一部分的介绍,首先对各个功能模块的分析,然后详细分析数据索 ...

  5. CentOS 7.0yum安装MySQL

    CentOS 7.0yum安装MySQL 1.下载mysql的repo源 $ wget http://repo.mysql.com/mysql-community-release-el7-5.noar ...

  6. 利用日志文件恢复MYSQL数据库

    利用日志文件恢复MYSQL数据库 650) this.width=650;" onclick='window.open("http://blog.51cto.com/viewpic ...

  7. java体系学习

    前端部分: 1)HTML:网页的核心语言,构成网页的基础 2)CSS:使网页更加丰富多彩灿烂的利器 3)JavaScript:使网页动起来的根本,加强了网页和用户之间的交互 4)HTML DOM:换一 ...

  8. SQL 金额添加千分位

    SELECT CONVERT(NVARCHAR(50),CAST(1000000 AS MONEY),1) SELECT CONVERT(NVARCHAR,CAST(1343432432434.8 A ...

  9. Snapshot Standby

    INTRODUCTION Snapshot standby database是ORACLE 11g的新特性.允许Physical standby短时间的使用read write模式. Snapshot ...

  10. Summary Day32

    1 . 文件管理 1.1 标C文件处理和UC文件处理函数的比較: 标C文件处理函数比UC的文件处理函数速度快.由于标C内部独立输入输出缓冲区, 会积累一定数量之后再写入文件,因此读写效率比較高 使用t ...