`
BradyZhu
  • 浏览: 248156 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

对于Java类加载过程中的顺序问题探究

 
阅读更多

以前记得static代码块貌似是Java类加载过程中优先级最高的,但是最近几天写代码发现不是这样的,因为static变量

的优先级要比static代码块高得多,所以因此我犯了不少错误,下面以一个例子来说明一下一个类初始化为对象的时候的

加载过程

package com.bird.jdbc;


public class Test {
	
	
	private static A a = new A();
	private final static F f= new F();
	private B b = new B();
	
	static{
		System.out.println("c");
	}
	
	public Test(){
		System.out.println("Test");
	}
	
	public static void main(String[] args){
//		Test t = new Test();
		try {
			Class.forName("com.bird.jdbc.Test");
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

class A{
	public A(){
		System.out.println("A");
	}
}

class B{
	public B(){
		System.out.println("B");
	}
}


class F{
	public F(){
		System.out.println("F");
	}
}

大家可以看到,直接运行Test t = new test();这句话,运行结果为

A
F
c
B
Test

所以是先static变量,然后是static的代码块,然后才是普通变量,最后是构造函数

如果是运行Class.forName()函数的话,运行结果为

A
F
c

还是这样,先是static变量,然后才是static代码块,所以那种对于class.Forname加载类,只调用static代码块的误区

要克服,因为还有一个static代码块在等着你,呵呵,我得记录下来以示警戒

分享到:
评论

相关推荐

    讨论html与javascript在浏览器中的加载顺序问题

    今天的任务是把asp.net ajax中客户端页面生命周期那一章研究完。然而,因为这一章的内容使我产生了一些迷惑。这些疑惑在书中都没有只字提及。 一、html页面的详细加载过程是什么呢?页面元素在加载时的优先级是什么...

    Java数据编程指南

    在本书中,我们将研究Java用于访问和处理数据的各种技术。本书将向读者介绍如何使用Java开发企业级的分布式应用程序,其中涉及生成、处理、存储、 与检索各种类型的数据与不同的数据库。 本书按照一定的逻辑顺序...

    beandemo.rar

    代码主要展示了Spring在初始化的过程中,各个回调函数的调用顺序,也可以在此基础上进行扩展研究,有助于了解Spring的加载过程

    javaSE代码实例

    10.6 Java程序的加载过程 190 10.7 小结 192 第三篇 高级基础篇 第11章 异常处理——Java世界的医生 195 11.1 异常处理的基本知识 195 11.1.1 try和catch捕获异常 195 11.1.2 异常的传播过程 198 ...

    深入理解Android:卷I--详细书签版

     第5章讲解了Android源码中常用的类,如sp、wp、RefBase、Thread类、同步类、Java中的Handler类以及Looper类。这些类都是Android中最常用和最基本的,只有掌握这些类的知识,才 能在分析后续的代码时游刃有余。 ...

    asp.net知识库

    帮助解决网页和JS文件中的中文编码问题的小工具 慎用const关键字 装箱,拆箱以及反射 动态调用对象的属性和方法——性能和灵活性兼备的方法 消除由try/catch语句带来的warning 微软的应试题完整版(附答案) 一个...

    夏昕.深入浅出Hibernate

    在编写过程中,进行了重新构思与组织,同时对内容的深度与广度进行了重点强化。本书从持久层入手,引出对象/关系数据库映射的由来,接下来聚焦于目前最完善、最强悍的ORM产品—— Hibernate。从一个基础程序入手,...

    浅析node Async异步处理模块用例分析及常用方法介绍

    那么问题来了,在编写node的时候,会在后台去请求很多接口(我们公司是与java后台交接数据的),接口就会有个回调,这么多回调怎么办呢……每个回调回来的加载顺序怎么去处理是个问题……总不可能去嵌套……嵌套……...

    深入理解计算机系统·英文版 Computer.Systems.A.Programmer’s.Perspective

    本书的最大优点是帮助读者理解概念,让读者很清楚地在脑海中构造一个层次型的计算机系统,从最低层数据在内存中的表示(如我们一直陌生的浮点数表示),到流水线指令的构成,到虚拟存储器,到编译系统,到动态加载库...

    深入理解计算机系统(英文版)

    本书的最大优点是帮助读者理解概念,让读者很清楚地在脑海中构造一个层次型的计算机系统,从最低层数据在内存中的表示(如我们一直陌生的浮点数表示),到流水线指令的构成,到虚拟存储器,到编译系统,到动态加载库...

    CSAPP(深入理解计算机系统)

    本书的最大优点是帮助读者理解概念,让读者很清楚地在脑海中构造一个层次型的计算机系统,从最低层数据在内存中的表示(如我们一直陌生的浮点数表示),到流水线指令的构成,到虚拟存储器,到编译系统,到动态加载库...

    computer-science:理论计算机科学概念的“内幕”解释

    该页面包含“内幕”对诸如算法,数据结构, UNIX操作系统和计算机网络(等)之类的理论概念的解释。 还研究并解决了一些,其中始终包括时间和内存复杂性分析。 指数 计算机架构 资料库 操作系统 计算机网络 并行计算...

    PointCloudARSingle:使用ARCore的AR应用程序在增强现实中渲染彩色点云

    首先,使用“ allData.txt”文件将它们加载到内存中。 然后使用相应的“ batchX.file”确定顺序。 在此重要的是,每一行都包含一个要可视化的内容。 每次评估后都会保存位置数据,分数会保留在最后。 简介:随着...

    PointCloudARDouble:使用ARCore的AR应用程序在增强现实中渲染彩色点云

    首先,使用“ allData.txt”文件将它们加载到内存中。 然后使用相应的“ batchX.file”确定顺序。 在此重要的是,每一行都包含要可视化的两个内容。 位置数据将在每对之后保存,分数将保存在末尾。 简介:随着虚拟...

    jquery插件使用方法大全

    由于目前高校基本尚未开JavaScript的相关课程,目前jQuery的学习,使用,研究都仅限于在职Web程序员之间。 用jq的前提,首先要引用一个有jq的文件 [removed][removed] 这个是jquery官方最新的地址。可用在自己网站...

Global site tag (gtag.js) - Google Analytics