当创建一个对象时,各种成员变量及构造方法的初始化或调用顺序是怎样的呢? (1).如果类尚未加载,则先初始化静态成员变量和静态代码块,再初始化成员变量,最后调用相应的构造方法: (2).如果类已经加载过了,则静态成员变量已经初始过了,静态代码块也已执行,这时只需初始化成员变量,再调用构造方法就可以了: (3).如果类还有父类,则按(1)或(2)的顺序先初始化父类,再初始化子类. 下面以例子详细说明. 包human中定义了四个类,分别为Person.Student.DustMan.TestMain:…
一.java对象初始化过程 第一步,加载该类,一个java对象在初始化前会进行类加载,在JVM中生成Class对象.加载一个类会进行如下操作,下面给出递归描述.(关于Class对象详见反射 点击这里) 如果该类有父类,则先加载其父类. i 初始化该类静态成员 ii 执行该类静态代码块 第二步,创建对象,如果该类有父类,则创建对象时会先创建其父类的对象,外层包裹子类的属性和方法,然后返回子类的引用,下面给出递归描述. 如果该类有父类,先创建父类的对象. i 初始化该类普通成员. ii 执行普通代码…
一个类中的数据初始化顺序是面试官非常喜欢出的面试题之一,本文用一个实例来介绍java中子类.父类中静态代码块.字段,非静态代码块.字段以及构造函数的执行顺序和次数. 一.包结构…
static可以修饰哪些成员 成员变量---可以修饰 构造方法---不可以 方法---可以修饰 初始化块---可以修饰 内部类(包括接口.枚举)---可以修饰 总的来说:静态成员不能访问非静态成员 静态变量 static修饰的变量为静态变量 在创建对象时,静态变量位于方法区中,而非像实例变量一样,位于堆内存中 一个类的所有对象共用相同静态变量,通过类名来调用静态变量,通过实例来调用虽然也符合语法,但不推荐 示例:静态变量的一个用法 class Employee{ private static i…
在网上看了一个这样的题目 public class StaticTest { public static void main(String[] args) { staticFunction(); } static StaticTest st = new StaticTest(); static { System.out.println("1"); } { System.out.println("2"); } StaticTest() { System.out.pri…
1.源码是: package text; public class TestStaticCon { public static int a = 0; static { a = 10; System.out.println("静态代码块在执行a="+a); } { a = 8; System.out.println("非静态代码块在执行a="+a); } public TestStaticCon() { this("带参构造方法在执行a="+a);…
1. 代码实例: package text; public class TestStaticCon { public static int a = 0; static { a = 10; System.out.println("静态代码块在执行a="+a); } { a = 8; System.out.println("非静态代码块在执行a="+a); } public TestStaticCon() { this("带参构造方法在执行a="+a…
1.Person类 package com.yfs.javase; public class Person { String name;//每个对象上分配 与对象绑定 int age; char sex; boolean married; static String country = "中国";//静态属性 与类绑定 所有对象共享 public static void baseInfo () {//静态方法 与类绑定 所有对象共享 System.out.println("舌…
在Java中,类装载器把一个类装入Java虚拟机中,要经过三个步骤来完成:装载.连接和初始化,其中连接又可以分成校验.准备和解析三步,除了解析外,其它步骤是严格按照顺序完成的,各个步骤的主要工作如下:1.装载2.连接3.初始化 一.装载阶段 装载阶段由三个基本动作组成1.通过类型的完全限定名,产生一个代表该类型的二进制数据流2.解析这个二进制数据流为方法区内的内部数据结3.构创建一个表示该类型的java.lang.Class类的实例 另外如果一个类装载器在预先装载的时遇到缺失或错误的class文…
[前面的话] 算是真正的放松了好几天时间,没有看任何书,没有任何任务,今天是过完年后的第一天上班时间,我又开始了我的学习之路,感觉还没有老,怎么心态越来越平静了,进入工作状态,就好好努力工作,新的一年,我会不努力?哈哈. 这篇文章是自己在学习的过程中总会发现一些小的知识点,然后我就记录在这了,基础文章,选择阅读. [知识汇总] 一.静态导入 代码 静态导入之前的代码: public class HelloWorld{ public static void main(String[] args){…