Java对象初始化顺序的使用
单一类:(静态成员变量&静态初始化块)<(成员变量&初始化块)<构造函数
代码如下:
public class 对象初始化顺序 {
public static void main(String[] args){
Person p = new Person();
}
}
class Person{
public static String staticfield ="静态成员变量";
public String field ="成员变量";
static
{
System.out.println(staticfield);
System.out.println("静态初始化块");
}
{
System.out.println(field);
System.out.println("初始化块");
}
Person(){
System.out.println("构造函数");
}
}
输出结果
静态成员变量
静态初始化块
成员变量
初始化块
构造函数
继承类:(父类静态成员变量&父类静态初始化块)<(子类静态成员变量&子类静态初始化块)<(父类变量&父类初始化块)<(父类构造器&子类变量)<(子类初始化块&子类构造器)
括号内根据出现的先后顺序决定。
相关推荐
-
Java中对象初始化顺序的详细介绍
前言 在Java中,一个对象在可以被使用之前必须要被正确地初始化,这一点是Java规范规定的.最近我发现了一个有趣的问题,这个问题的答案乍一看下骗过了我的眼睛.看一下这三个类: package com.ds.test; public class Upper { String upperString; public Upper() { Initializer.initialize(this); } } package com.ds.test; public class Lower extends
-
java类中元素初始化顺序详解
复制代码 代码如下: public class Test4 { @Test public void test(){ child child = new child(); }} class parent{ public static String parentStaticField = "父类静态变量"; public String parentNormalField ="父类普通变量"; static {
-
通过java字节码分析学习对象初始化顺序
复制代码 代码如下: mockery.checking(new Expectations() { { one(new Object()).toString(); will(returnValue("")); } }); 下面写一个写一个简单的类演示这个例子 复制代码 代码如下: public class Test { int i = 1; { int j = 1;
-
浅谈Java变量的初始化顺序详解
规则1(无继承情况下):对于静态变量.静态初始化块.变量.初始化块.构造器,它们的初始化顺序依次是(静态变量.静态初始化块)>(变量.初始化块)>构造器证明代码: 复制代码 代码如下: public class InitialOrderTest { // 静态变量 public static String staticField = "静态变量"; // 变量 public String field = "变量"; // 静
-
JAVA中使用双括号来初始化静态常量的小技巧
这貌似是个不为人知的语言技巧.我看到一般人写Java里初始化静态常量都是 复制代码 代码如下: public static final Map<String, String> DATA = new TreeMap<String, String>(); static{ DATA.put("a", "A"); //blah blah blah} 使用所在类的static块来初始化DATA,其实还有另外一种写法: 复制代码 代码如下: public
-
深入介绍Java对象初始化
前言 在Java中,一个对象在可以被使用之前必须要被正确地初始化,这一点是Java规范规定的. 自动初始化(默认值) 一个类的所有基本数据成员都会得到初始化,运行下面的例子可以查看这些默认值: class Default{ boolean t; char c; byte b; short s; int i; long l; float f; double d; public void show() { System.out.println("基本类型 初始化值\n"+ "bo
-
Java中static静态变量的初始化完全解析
静态变量初始化顺序 1.简单规则 首先先看一段最普遍的JAVA代码: public class Test { public static Test1 t = new Test1(); public static int a = 0; public static int b; public static void main(String[] arg) { System.out.println(Test.a); System.out.println(Test.b); } } class Test1
-
Java类变量和成员变量初始化过程的应用介绍
一.类的初始化 对于类的初始化:类的初始化一般只初始化一次,类的初始化主要是初始化静态成员变量. 类的编译决定了类的初始化过程. 编译器生成的class文件主要对定义在源文件中的类进行了如下的更改: 1) 先按照静态成员变量的定义顺序在类内部声明成员变量. 2) 再按照原java类中对成员变量的初始化顺序进行初始化. 一个java类和编译后的class对应的转换如下: 源文件: 复制代码 代码如下: public class Person{ public static S
-
java对象初始化顺序验证示例
复制代码 代码如下: public class Derive extends Base { private Member m1 = new Member("Member 1"); { System.out.println("Initial Block()"); } public Derive() { System.out.println("Derive()"); } private Member
-
Java对象初始化顺序的使用
单一类:(静态成员变量&静态初始化块)<(成员变量&初始化块)<构造函数 复制代码 代码如下: public class 对象初始化顺序 { public static void main(String[] args){ Person p = new Person(); }}class Person{ public static String staticfield ="静态成员变量"; public String fi
-
Java——对象初始化顺序使用详解
一. 代码块的概念 在探究对象初始化顺序之前,我们先通过代码来了解一下代码块的概念. class Test{ public static String str1; //静态字段 public String str2; //普通字段 static{ //静态代码块 } { //构造代码块 } public Test() { //构造函数 } } 二. 创建子类对象时,对象的初始化顺序 1. 字段初始化.代码块和构造函数的执行顺序 我们先看代码和结果 public class CodeBlockTe
-
Java对象初始化过程代码块和构造器的调用顺序
目录 前言 代码加载的优先级顺序 构造方法的执行顺序 各种代码块的定义 静态代码块 有关静态代码块再详细介绍下 局部代码块 验证各代码块的执行顺序 验证存在继承关系中各代码块的执行顺序 通过字节码深究实例代码块优先于构造器原因 前言 对Java对象初始化过程 代码块与构造器调用顺序进行整理说明.先说结论具体论证在下文. 代码加载的优先级顺序 静态代码块.静态成员变量->非静态代码块.非静态成员变量->new其他对象调用对应对象构造方法(在本地对象的方法外包括构造方法)->new本地对象调
-
Java 程序初始化顺序
Java程序的初始化一般遵循三个原则(优先级依次递减): 1,静态对象(变量)优先于非静态对象(变量)初始化,其中,静态对象(变量)只初始化一次,而非静态对象(变量)可能会初始化很多次. 2,父类优先于子类进行初始化. 3,按照成员变量的定义顺序进行初始化.即使变量定义散布于方法定义之中,它们依然在任何方法被调用之前先初始化. Java程序初始化工作可以在许多不同的代码块中完成(例如静态代码块,构造函数等),它们的执行顺序如下: 父类静态变量 父类静态代码块 子类静态变量 子类静态代码块 父类非
-
c#对象初始化顺序实例分析
本文实例分析了c#对象初始化顺序.分享给大家供大家参考.具体如下: using System; using System.Collections.Generic; using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { A a = new B(); Console.ReadLine(); } } class A { //调用到这个构造函数时:x=1,y
-
java对象初始化代码详解
本文主要记录JAVA中对象的初始化过程,包括实例变量的初始化和类变量的初始化以及final关键字对初始化的影响.另外,还讨论了由于继承原因,探讨了引用变量的编译时类型和运行时类型 一,实例变量的初始化 这里首先介绍下创建对象的过程: 类型为Dog的一个对象首次创建时,或者Dog类的static字段或static方法首次访问时,Java解释器必须找到Dog.class(在事先设定好的路径里面搜索): 找到Dog.class后(它会创建一个Class对象),它的所有static初始化模块都会运行.
随机推荐
- 通过PHP的内置函数,通过DES算法对数据加密和解密
- 【Redis缓存机制】详解Java连接Redis_Jedis_事务
- jQuery实现微信长按识别二维码功能
- 简单理解遵循接口隔离原则的Java设计模式编程
- springboot注入servlet的方法
- IE 缓存策略的BUG的解决方法
- 简单理解js的冒泡排序
- 在ASP.NET中使用JavaScript脚本的方法
- php制作基于xml的RSS订阅源功能示例
- jQuery打印指定区域Html页面并自动分页
- 用Node.js通过sitemap.xml批量抓取美女图片
- 实例解析Android系统中的ContentProvider组件用法
- Java enum的用法详细介绍及实例代码
- 关注细节压线钳选购有讲究
- spring boot自定义log4j2日志文件的实例讲解
- Android打开淘宝客户端(手淘)效果及实现代码
- 使用Vue的slot插槽分发父组件内容实现高度复用、更加灵活的组件(推荐)
- Intellij IDEA安装lombok插件及使用详解
- php统计数组不同元素的个数的实例方法
- Django之使用haystack+whoosh实现搜索功能