首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

java基础☞初始化顺序】java继承中初始化顺序

子类静态成员被初始化 子类静态代码块被执行 父类非静态成员被初始化 父类非静态代码块被执行 父类构造方法被执行 子类非静态成员被初始化 子类非静态代码块被执行 子类构造函数被执行...2、JAVA加载机制 Java类加载分为5个过程,分别为:加载,连接(验证,准备,解析),初始化,使用,卸载。...2)将字节流所代表静态存储结构转化为方法区运行时数据结构; 3)在内存中生成一个该类java.lang.Class对象,作为方法区这个类各种数据访问入口。...验证阶段会完成以下4个阶段检验动作: 1)文件格式验证 2)元数据验证(是否符合Java语言规范) 3)字节码验证(确定程序语义合法,符合逻辑) 4)符号引用验证...初始化 初始化阶段是类加载过程最后一步,主要是根据程序中赋值语句主动为类变量赋值。 当有继承关系时,先初始化父类再初始化子类,所以创建一个子类时其实内存中存在两个对象实例。

98130
您找到你想要的搜索结果了吗?
是的
没有找到

Java初始化

三种初始化数据域方法:在构造器中设置值在声明中赋值初始化块(initialization block)初始化块在一个类声明中,可以包含多个代码块。只要构造类对象,这些块就会被执行。...首先运行初始化块,然后才运行构造器主体部分。初始化块这种机制不是必需,也不常见。通常会直接将初始化代码放在构造器中。---由于初始化数据域有多种途径,所以列出构造过程所有路径可能相当混乱。...下面是调用构造器具体处理步骤:所有数据域被初始化为默认值(0、false 或 null)按照在类声明中出现次序,依次执行所有域初始化语句和初始化块如果构造器第一行调用了第二个构造器,则执行第二个构造器主体执行这个构造器主体静态初始化块可以通过提供一个初始化值...前面已经介绍过第一种机制(提供一个初始化值):private static int nextId = 1;如果对类静态域进行初始化代码比较复杂,那么可以使用静态初始化块。...参考资料《Java核心技术卷一:基础知识》(第10版)第 4 章:对象与类 4.6.7 初始化

18020

java数组 初始化_用Java初始化数组「建议收藏」

大家好,我是架构君,一个会写代码吟诗架构师。今天说一说java数组 初始化_用Java初始化数组「建议收藏」,希望能够帮助大家进步!!!...java数组 初始化 具有使用C或FORTRAN等语言进行编程经验的人熟悉数组概念。 它们基本上是一个连续内存块,每个位置都是某种类型:整数,浮点数或您所拥有的。...在= =右边,我们看到了单词new ,它在Java中表示一个对象正在初始化 ,这意味着将分配存储并调用其构造函数( 有关更多信息,请参见此处 )。...接下来,我们看到int [10] ,它告诉我们正在初始化特定对象是10个整数数组。 由于Java是强类型,因此变量ia类型必须与=右侧表达式类型兼容。...我们声明类型,使用适当初始化程序,我们完成了吗? 好吧,不。 还有许多其他方法可以用Java初始化数组。 为什么我要初始化一个数组? 在某些情况下,数组自然会作为一种累加器出现。

1.6K20

java中数组初始化方法_java数组初始化赋值

java初始化数组方式有几种 发布时间:2020-06-01 16:12:45 来源:亿速云 阅读:153 作者:鸽子 三种初始化方式: 1、静态初始化:创建+赋值 2、动态初始化:先创建再赋值...3、默认初始化:创建之后若不赋值则会被赋对应数据类型默认值 我们来看一下具体代码:public class Test3 { public static void main(String[] args...:创建 + 赋值 int[] array2 = {0,1,2,3}; // 2、动态初始化:先创建再赋值 int[] array3 = new int[10]; for (int i = 0; i <...array3.length ; i++) { array3[i] = i; } // 3、默认初始化 } } 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。...如发现本站有涉嫌侵权/违法违规内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

1.9K10

Java静态初始化和非静态初始化

Java初始化 Java与C++一个不同之处在于,Java不仅有构造函数,还有一个“初始化块”(Initialization Block)概念。...Java初始化块在创建Java对象时隐式执行,并且是在构造函数之前执行。 2....静态初始化 // 定义 static { ... } 静态初始化块执行优先级高于非静态初始化块,在对象装载到JVM中时执行一次,仅能初始化类成员变量,即static修饰数据成员。 3....总结 从某种程度上来看,初始化块是构造器补充,初始化块总是在构造器之前执行。初始化块是一段固定执行代码,它不能接受任何参数。因此初始化块对同一个类所有对象所进行初始化处理完全相同。...如果有一段初始化处理代码对所有的对象完全相同,且无需接受任何参数,就可以把这段初始化处理代码提取到初始化块中。通过把多个构造器中相同代码提取到初始化块中定义,能更好地提高初始化代码复用。

2.7K20

java完善程序_JAVA 程序

参考链接: 用于计算商数和余数Java程序 摘抄自:http://www.cnblogs.com/forlina/archive/2011/08/03/2126292.html1.完成数组int[]...要求如下:  (1)利用浮点变量表示此类私有数据。提供两个构造方法,一个用于此类声明时对象初始化;一个为带默认值得无参构造方法。  (2)提供两复数加、减、乘运算方法。  ...9.输入一个整数,求这个整数中每位数字相加和  10.编写一个java应用程序,要求如下:  (1)声明一个String类变量并初始化值“Hello World”。  ...(4)声明一个String类变量并初始化值“20100110”。  (5)将上面变量值转换成2010年1月10日形式打印输出。  ...今有一考生虽然回答了全部26个问题,但所得总分为零,问他错答多少

1.6K20

JAVA初始化顺序

在一个类里,初始化顺序是由变量在类内定义顺序决定。即使变量定义大量遍布于方法定义中间, 那些变量仍会在调用任何方法之前得到初始化——甚至在构建器调用之前。...例如: //: OrderOfInitialization.java // Demonstrates initialization order. // When the constructor is called...除此之外,t3 在构建器内部得到了重新初始化。...它输入结果如下: Tag(1) Tag(2) Tag(3) Card() Tag(33) f() 因此,t3 句柄会被初始化两次,一次在构建器调用前,一次在调用期间(第一个对象会被丢弃,所以它后来...从表面看,这样做似乎效率低下,但它能保证正确初始化——若只定义了一个过载构建器,它没有初始化 t3;同时在t3 定义里并没有规定“默认”初始化方式,那么会产生什么后果 呢?

70620

Java初始化顺序

作者:wota 来源:http://www.cnblogs.com/miniwiki/archive/2011/03/25/1995615.html(点击文末阅读原文前往) 1 无继承情况下Java...--------构造函数 2 Java继承情况下初始化顺序: class Test{ static{ System.out.println("父类static 块 1 执行...子类 sam1成员初始化 子类 sam2成员初始化 子类 TestSub 默认构造函数被调用 -------父类普通成员初始化和构造函数执行 由此得出Java初始化顺序结论: 1 继承体系所有静态成员初始化...(先父类,后子类) 2 父类初始化完成(普通成员初始化-->构造函数调用) 3 子类初始化(普通成员-->构造函数) Java初始化顺序如图: ?...3.另外一条规则是初始化块和域初始化按照声明顺序进行。 详见thinking in java中译本第四版P147页。

60470

Java初始化和清理

这一章将讨论初始化和清理问题,以及在 Java 中对它们支持。 2 利用构造器保证初始化 你可能想为每个类创建一个 initialize() 方法,该方法名暗示着在使用类之前需要先调用它。...不幸是,用户必须得记得去调用它。在 Java 中,类设计者通过构造器保证每个对象初始化。...在 Java 中,对象创建与初始化是统一概念,二者不可分割。 构造器没有返回值,它是一种特殊方法。...7 成员初始化 Java 尽量保证所有变量在使用前都能得到恰当初始化。...非静态实例初始化 Java 提供了被称为实例初始化类似语法,用来初始化每个对象非静态变量,例如: // housekeeping/Mugs.java // Instance initialization

85920

Java 对象初始化过程_下

前言 本文将继上一篇文章《Java 对象初始化过程_上》进一步讲述Java 对象初始化过程。...示例 首先创建两个父子关系类 Animal.java package cn.ttext.test.init; public class Animal { //体重 private int...在堆内存中开辟类实例对象空间。 对类实例对象中成员变量进行默认初始化。 对类实例对象中成员变量进行显示初始化。...(private int i = 10;这样成员变量,将在这个环节初始化) 进行构造函数初始化。...对子类进行构造函数初始化时,要先初始化父类构造函数,既先运行 Animal 构造函数,再运行 Person 构造函数,由于构造代码块中代码实际上是放到 构造函数中运行,所以输出了5-10行内容

54620

JAVA进阶】HashMap容量初始化

(jdk1.7.0_79)下面来分别测试下,在不指定初始化容量和指定初始化容量情况下性能情况如何。...HashMap中容量初始化 当我们设置HashMap初始化容量时,实际上HashMap会采用第一个大于该数值2幂作为初始化容。...MAXIMUM_CAPACITY : n + 1; 上面的代码挺有意思,一个简单容量初始化Java工程师也有很多考虑在里面。...好了,我们现在解释清楚了Step 1和Step 2代码。就是可以把一个数转化成第一个比他自身大2幂。(可以开始佩服Java工程师们了,使用无符号右移和按位或运算大大提升了效率。)...关于这个值设置,在《阿里巴巴Java开发手册》有以下建议: initinalCapacity=(需要存储元素个数/负载因子)+1。

1.7K10

Java 对象初始化过程_上

前言 本文主要以白话形式 ‘简单’ 描述在 java 中 new 对象过程,之所以说是 ‘简单’ 描述是因为,在本文中不会讲述底层加载过程。...示例 首先认识几个知识点: 静态代码块 它会在类初始化时候执行一次,仅能初始化类变量, 即被static修饰成员变量,如果有多个静态代码块时,会按照静态代码块编写顺序执行。...所以也可以认为,构造代码块将在构造方法执行之前执行,如果存在有多个构造代码块时,那么就会按照构造代码块编写顺序执行。由于构造代码块代码是放到构造方法中执行,所以作用也是初始化类实例变量。...适用场景: 一个类,它不管创建多少个实例对象,都需要执行相同初始化代码。 你类有n个构造方法,而每个构造方法都需要执行相同初始化代码。...构造方法可以初始化类成员变量。

64620

Java 中类初始化过程

先来一张 JVM 中内存模型 。 ? 在Java 虚拟机原理这本书中介绍了类会被初始化 5 种情况 。...5 当使用JDK1.7动态语言支持时,如果一个java.lang.invoke.MethodHandle实例最后解析结果 REF_getStatic、REF_putStatic、REF_invokeStatic...关于类中结构加载顺序 ,首次创建对象时 ,类中静态方法 / 静态字段首次被访问时 ,Java 解释器必须先查找类路径 ,以定位.class 文件;然后载入 .class (这将创建一个 Class...这里触发了另一个名为 “ [Lcom.sun.jojo.noinitclass.SuperClass ” 初始化 ,他是虚拟机自动创建直接继承于 java.lang.Object 子类 ,创建动作由字节码指令...接口初始化和类初始化类似 ,区别在于 5 种情况第三种 :子类初始化过程中其父类必须先初始化 ,但接口初始化时不要求其父接口也进行初始化 ,只有在用到父接口时 ,才会去初始化

65720

Java,与类初始化顺序

转载自 https://blog.csdn.net/sujz12345/article/details/52590095 与 Java在编译之后会在字节码文件中生成方法,称之为实例构造器,该实例构造器会将语句块...,变量初始化,调用父类构造器等操作收敛到方法中,收敛顺序(这里只讨论非静态变量和语句块)为:  1....子类构造函数 所谓收敛到方法中意思就是,将这些操作放入到中去执行 Java在编译之后会在字节码文件中生成方法,称之为类构造器,类构造器同实例构造器一样,也会将静态语句块,静态变量初始化,收敛到方法中...父类静态变量初始化  2. 父类静态语句块  3. 子类静态变量初始化  4. 子类静态语句块 方法是在类加载过程中执行,而是在对象实例化执行,所以一定比先执行。...父类静态变量初始化  2. 父类静态语句块  3. 子类静态变量初始化  4. 子类静态语句块  5. 父类变量初始化  6. 父类语句块  7. 父类构造函数  8.

30500

Java中变量初始化顺序

Java中变量初始化顺序 在写一个通用报警模块时,遇到一个有意思问题,在调用静态方法时,发现静态方法内部对静态变量引用时,居然抛出了npe,仿佛是因为这个静态变量初始化在静态方法被调用时,还没有触发...静态变量初始化顺序 类初始化时,会优先初始化静态成员,那么一个类中有多个静态成员时,如何处理? 下面是一个使用静态成员,静态代码块,静态方法测试类,那么下面的输出应该是怎样呢?...=null : true | num > 0 : 10 从实际输出结果来看: 初始化顺序比较清晰了,压根就是根据初始化代码先后顺序来, 且在调用静态方法时,静态方法内部静态成员已经被初始化 那么问题来了...Exception in thread "main" java.lang.ExceptionInInitializerError Caused by: java.lang.RuntimeException...也就是说,初始化异常之后代码将不会在继续执行 那么第二个问题来了,前面说到哪个问题是什么情况 最开始说到,在调用类静态方法时,发现本该被初始化静态成员,依然是null,从上面的分析来说,唯一可能就是在成员变量初始化过程中

1.2K10
领券