这篇文章将为大家详细讲解有关如何在java中引用类,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
1、类的主动引用,一定会发生类的初始化
当虚拟机启动,先初始化main方法所在的类
实例化一个类的对象
调用类的静态成员(除了final常量)和静态方法
使用java.lang.reflect包的方法对类进行反射调用
当初始化一个类,如果其父类没有被初始化,则先会初始化它的父类
2、类的被动引用,不会发生类的初始化
当访问一个静态域时,只有真正声明这个域的类才会被初始化。如:当通过子类引用父类的静态变量,不会导致子类初始化
通过数组定义类引用,不会触发此类的初始化
引用常量不会触发此类的初始化(常量在链接阶段就存入调用类的常量池中了)
3、实例
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的基本数据类型分为:1、整数类型,用来表示整数的数据类型。2、浮点类型,用来表示小数的数据类型。3、字符类型,字符类型的关键字是“char”。4、布尔类型,是表示逻辑值的基本数据类型。
关于如何在java中引用类就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
原文链接:https://www.py.cn/java/jichu/30618.html