类初始化 常量引用

class ConstClass{    static {        System.out.println("ConstClass init");    }    public static final String HELLOWORLD = "hello world";}class NotInitialzation{    public static void main(String[] args){        System.out.println(ConstClass.HELLOWORLD);        //只是输出 hello world        //因为虽然在Java源码中引用了ConstClass类中的常量,但是在编译阶段将此常量        //的值存储到了NotInitialzation类的常量池中,对常量ConstClass.HELLOWORLD        //的引用实际都被转化为NotInitialzation类对自身常量池的引用        //也就是说NotInitialzation的class文件中没有ConstClass类的符号引用入口        //这两个类在编译成class之后就不存在任何联系了    }}
时间: 2024-10-30 14:42:51

类初始化 常量引用的相关文章

引用专题(续)=》 常量引用

常引用分两点: 1 使用变量初始化const引用 const int &a = b 2 使用字面量常量初始化const引用  const int &m = 10: #include <iostream> using namespace std; void main() {     //普通引用     int a = 10;     int &b = a;     printf("b"%d\n",b);               //常引

深入理解JVM-类加载初始化阶段-类的主动与被动引用

JVM的类加载阶段中初始化阶段 P210 虚拟机规定的五种情况必须对类的“初始化”情况 1.遇到new.getstatic.putstatic.或invokestic 四条字节码指令时,如果类没有经过初始化,则需要先触发使其初始化,生成这四条指令的最常见的java代码场景时:使用new关键字实例化对象的时候.读取或设置一个类的静态字段(被final修饰,已在编译器把结果放入常量池的静态字段除外)的时候,以及调用一个类的静态方法的时候. 2.使用java.lang.reflect包的方法对类进行反

Cocos2d-x 3.1.1 学习日志3--C++ 初始化类的常量数据成员、静态数据成员、常量静态数据成员

有关const成员.static成员.const static成员的初始化: 1.const成员:只能在构造函数后的初始化列表中初始化 2.static成员:初始化在类外,且不加static修饰 3.const static成员:类只有唯一一份拷贝,且数值不能改变.因此,可以在类中声明处初始化,也可以像static在类外初始化 #include <iostream> using std::cout; using std::endl; class base { public: base(int

C++类中常量数据成员和静态数据成员初始化

常量数据成员初始化原则: 在每一个构造函数的初始化列表中初始化 静态数据成员初始化原则: 类内声明,类外初始化(因为它是属于类的,不能每构造一个对象就初始化一次) // test_max.cpp : 定义控制台应用程序的入口点. #include "stdafx.h" #include <iostream> #include <vector> using namespace std; class A { public: A(int i):a(0) {} A():

Java虚拟机 - 类初始化

[深入Java虚拟机]之三:类初始化 类初始化是类加载过程的最后一个阶段,到初始化阶段,才真正开始执行类中的Java程序代码.虚拟机规范严格规定了有且只有四种情况必须立即对类进行初始化: 遇到new.getstatic.putstatic.invokestatic这四条字节码指令时,如果类还没有进行过初始化,则需要先触发其初始化.生成这四条指令最常见的Java代码场景是:使用new关键字实例化对象时.读取或设置一个类的静态字段(static)时(被static修饰又被final修饰的,已在编译期

转:【深入Java虚拟机】之三:类初始化

转载请注明出处:http://blog.csdn.net/ns_code/article/details/17845821 类初始化是类加载过程的最后一个阶段,到初始化阶段,才真正开始执行类中的Java程序代码.虚拟机规范严格规定了有且只有四种情况必须立即对类进行初始化: 遇到new.getstatic.putstatic.invokestatic这四条字节码指令时,如果类还没有进行过初始化,则需要先触发其初始化.生成这四条指令最常见的Java代码场景是:使用new关键字实例化对象时.读取或设置

c++ 类初始化

一. 成员初始化列表的位置. 成员初始化列表的位置位于构造函数的函数体和参数表之间.构造函数初始化列表以一个冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后面跟一个放在括号中的初始化式,初始化式可以是表达式.派生类构造函数的形参还有其余常量. 通过成员初始化表,类数据成员可以被显式初始化.成员初始化表是由逗号分隔的成员/名字实参对.例如下面的双参数构造函数的实现就使用了成员初始化表. _name是string 型的成员类对象. Account::Account( const char*

C++——类继承以及类初始化顺序

对于类以及类继承, 几个主要的问题:1) 继承方式: public/protected/private继承. 这是c++搞的, 实际上继承方式是一种允许子类控制的思想. 子类通过public继承, 可以把基类真实还原, 而private继承则完全把基类屏蔽掉. 这种屏蔽是相对于对象层而言的, 就是说子类的对象完全看不到基类的方法, 如果继承方式是private的话, 即使方法在基类中为public的方法. 但继承方式并不影响垂直方向的访问特性, 那就是子类的函数对基类的成员访问是不受继承方式的影

Java类初始化顺序经典实例

一.阿里巴巴笔试题: 1 public class T implements Cloneable { 2 public static int k = 0; 3 public static T t1 = new T("t1"); 4 public static T t2 = new T("t2"); 5 public static int i = print("i"); 6 public static int n = 99; 7 8 public