热门IT资讯网

java类的引用方法有哪些

发表于:2024-11-23 作者:热门IT资讯网编辑
编辑最后更新 2024年11月23日,这篇文章主要讲解了"java类的引用方法有哪些",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"java类的引用方法有哪些"吧!1、类的主动引用,一定会发

这篇文章主要讲解了"java类的引用方法有哪些",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"java类的引用方法有哪些"吧!

1、类的主动引用,一定会发生类的初始化。当虚拟机启动,先初始化main方法所在的类

实例化一个类的对象

调用类的静态成员(除了final常量)和静态方法

使用java.lang.reflect包的方法对类进行反射调用

当初始化一个类,如果其父类没有被初始化,则先会初始化它的父类

2、类的被动引用,不会发生类的初始化

当访问一个静态域时,只有真正声明这个域的类才会被初始化。如:当通过子类引用父类的静态变量,不会导致子类初始化

通过数组定义类引用,不会触发此类的初始化

引用常量不会触发此类的初始化(常量在链接阶段就存入调用类的常量池中了)

实例

package com.volcano.reflection;//什么时候会发生类的初始化,除了第一个注释一直开着,其他都要独立打开测试,否则不准确public class TestReflection3 {    static {        //1.虚拟机启动就会最先初始化main方法所在的类 会        System.out.println("main方法被加载");    }    public static void main(String[] args) throws ClassNotFoundException {        //2.实例化一个对象 会        //new Father();        //3.调用类的静态成员(除了final常量)和静态方法 会        //System.out.println(Son.a);        //4.使用java.lang.reflect包的方法对类进行反射调用 会        //Class cls = Class.forName("com.volcano.reflection.Father");        //5.当初始化一个类,如果其父类没有被初始化,则先会初始化它的父类 会        //new Son();         //6.当访问一个静态域时,只有真正声明这个域的类才会被初始化 不会        //System.out.println(Father.a);//两个都是只加载Father        //System.out.println(Son.a);//因为a是Father的静态成员        //7.通过数组定义类引用,不会触发此类的初始化 不会        //Father[] fathers = new Father[10];        //8.引用常量不会触发此类的初始化 不会        //System.out.println(Father.B);     }}class Father{    static {        System.out.println("Father被加载");    }    static int a=100;    static final int B = 300;}class Son extends Father{    static {        System.out.println("Son被加载");    }    static int c=200; }

感谢各位的阅读,以上就是"java类的引用方法有哪些"的内容了,经过本文的学习后,相信大家对java类的引用方法有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

0