20171006-Java学习中static加载知识点
来源:互联网 发布:unity3d htc vive开发 编辑:程序博客网 时间:2024/06/01 19:46
今天在CSDN上查询学习static使用方式的时候,引出了一个细节性的问题,这里不多加阐述,只做自我学习结果记忆,具体文章可以查看原作者解释。
引入第一位作者文章——Java中的static关键字解析(http://www.cnblogs.com/dolphin0520/p/3799052.html),对其中一段代码的继承部分稍做改变:
public class Test { Person person = new Person("Test"); static{ System.out.println("test static"); } public Test() { System.out.println("test constructor"); } public static void main(String[] args) { new MyClass(); }} class Person{ static{ System.out.println("person static"); } public Person(String str) { System.out.println("person "+str); }} class MyClass extends An { Person person = new Person("MyClass"); static{ System.out.println("myclass static"); } public MyClass() { System.out.println("myclass constructor"); }}class An { Person person = new Person("An"); static{ System.out.println("an static"); } public An(){ System.out.println("an constuctor"); } public void pr(){ System.out.println("******"); }}
输出结果:
test statican staticmyclass staticperson staticperson Anan constuctorperson MyClassmyclass constructor主要是理解和掌握在类加载过程中执行顺序,静态代码块首先在类加载的时候就会执行,而并未加载其它非静态方法(非类成员),只有当需要初始化时候,会执行构造方法,而非普通方法(不论方式是否有static修饰符)。
这里在搜索结果中引出了另一个小细节
第二位作者的文章——【深入理解Java虚拟机】类加载机制 (http://blog.csdn.net/shakespeare001/article/details/51765353),原文现在还看不懂,但其中一段代码输出结果却让我觉得应该注意:
class ConstClass{ static{ System.out.println("ConstClass init!"); } public static final String HELLOWORLD = "hello world"; } public class Test { public static void main(String[] args) { System.out.println(ConstClass.HELLOWORLD); } }
输出结果:
hello world并未执行静态代码块里的代码。作者原文说明:常量在编译阶段会存入调用类的常量池中,本质上并没有直接引用到定义常量的类,因此不会触发定义常量的类的初始化。
知识点:
1、Java初始化,加载顺序:父类静态成员变量,父类静态代码块,子类静态成员变量,子类静态代码块,父类非静态成员变量,父类非静态代码块,父类构造函数,子类非静态成员变量,子类非静态代码块,子类构造函数。
2、不能使用this,super关键字。
阅读全文
0 0
- 20171006-Java学习中static加载知识点
- [ java ] java中static知识点!
- Java学习--知识点1--static关键字
- java中static小知识点记录
- java static一些知识点
- java-static知识点
- java中static学习总结
- JAVA中关键字Static以及java中类加载顺序
- 【Java学习】Java 中static 用法
- JAVA static加载顺序
- Java中static关键词学习笔记
- Java中学习笔记------static关键字
- java中static修饰符的代码的加载顺序
- Java中static关键字解析以及类加载顺序例题
- Java中子类、父类、变量、static方法的加载顺序
- JAVA知识点(整理学习中。。)
- Java学习中之重要知识点
- java static的加载顺序
- 171005 逆向-IAT导入地址表
- 技术与技术人员的价值
- 10-06 DFS学习——经典例题之数独(题目转自洛谷华南师大附中团队邀请赛,未ac,90分)
- window 安装composer
- XShell 连接 VM中Ubuntu问题
- 20171006-Java学习中static加载知识点
- js分页
- Programming Assignment 1: Percolation
- [洛谷 1066]2^k进制数---组合数学+高精度
- 使用T4模板根据数据库生成model层
- unity之TreeView
- 经验分享 UEFI win7重装系统
- 安卓apk调用uiautomator
- wobenng的收藏链接