全国旗舰校区

不同学习城市 同样授课品质

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  技术干货

java类的两种引用方法

发布时间:2022-08-09 16:51:00
发布人:qyf

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培训”的问题,欢迎咨询千锋教育在线名师。千锋教育多年办学,课程大纲紧跟企业需求,更科学更严谨,每年培养泛IT人才近2万人。不论你是零基础还是想提升,都可以找到适合的班型,千锋教育随时欢迎你来试听。

相关文章

Vmlogin是干什么用的?

Vmlogin是干什么用的?

2023-10-14
Tornado的核心是什么?

Tornado的核心是什么?

2023-10-14
ORM解决的主要问题是什么?

ORM解决的主要问题是什么?

2023-10-14
敏捷开发中为什么很少用到Youtrack工具?

敏捷开发中为什么很少用到Youtrack工具?

2023-10-14

最新文章

常见网络安全面试题:Windows常用的命令有哪些?

常见网络安全面试题:Windows常用的命令有哪些?

2023-10-09
常见网络安全面试题:根据设备告警如何展开排查?

常见网络安全面试题:根据设备告警如何展开排查?

2023-10-09
常见网络安全面试题:mysql加固呢?(数据库加固)

常见网络安全面试题:mysql加固呢?(数据库加固)

2023-10-09
常见网络安全面试题:windows和linux加固?(操作系统加固)

常见网络安全面试题:windows和linux加固?(操作系统加固)

2023-10-09
在线咨询 免费试学 教程领取