zoukankan      html  css  js  c++  java
  • finalkeyword对JVM类载入器的影响

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


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

  • 相关阅读:
    HTML5: HTML5 Video(视频)
    HTML5: HTML5 Geolocation(地理定位)
    HTML5: HTML5 拖放
    HTML5: HTML5 MathML
    HTML5: HTML5 内联 SVG
    HTML5: HTML5 Canvas
    HTML5: HTML5 新元素
    HTML5: 浏览器支持
    HTML5: HTML5 介绍
    HTML5: 目录
  • 原文地址:https://www.cnblogs.com/zhchoutai/p/8366768.html
Copyright © 2011-2022 走看看