Java类的初始化顺序问题

一般在Java对象能够调用方法之前,此类中的成员变量就已经初始化完毕,那如果这个成员是匿名内部类呢?也会等到这个匿名内部类中的代码全部跑完吗?

3个回答

Java初始化顺序
1在new B一个实例时首先要进行类的装载。(类只有在使用New调用创建的时候才会被java类装载器装入)
2,在装载类时,先装载父类A,再装载子类B
3,装载父类A后,完成静态动作(包括静态代码和变量,它们的级别是相同的,安装代码中出现的顺序初始化)
4,装载子类B后,完成静态动作
类装载完成,开始进行实例化
1,在实例化子类B时,先要实例化父类A
2,实例化父......
答案就在这里:关于java的初始化顺序的问题
----------------------Hi,地球人,我是问答机器人小S,上面的内容就是我狂拽酷炫叼炸天的答案,除了赞同,你还有别的选择吗?

匿名内部类还是和外面的一样的顺序,还是要分静态和非静态的

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
关于Java 类的初始化顺序的问题
这是一道关于**Java 类的初始化顺序**的问题,目前可以懵懂(思维混乱)地知道初始化顺序为** 成员变量->构造方法->成员方法 ,静态代码块->构造代码块->构造方法**, 但是感觉很混乱。能否将你的解题思路,思考过程详细地写下来。rn![图片说明](https://img-ask.csdn.net/upload/201701/13/1484312834_422684.png)
Java类的初始化顺序
Java类的初始化顺序 初始化顺序 在类的内部,变量定义的先后顺序决定了初始化的顺序。 变量定义散布于方法定义之前,它们会在任何方法(包括构造器) 被调用之前得到初始化。 初始化的顺序是先静态对象(如果它们尚未被初始化),而后是非静态对象。 构造器也是一种静态方法,因此当首次创建类的对象(或者类的静态方法/静态域 首次被访问时)Java解释器必须查找类路径,以定位.class文...
java类的初始化顺序
一个类的初始化会首先初始化静态代码块,然后初始化成员变量(成员变量有基本变量和引用变量),成员变量的初始化会首先进行默认初始化,然后是显示初始化,最后是构造方法初始化 class X {     Y b = new Y();     X() {         System.out.print("X");     } }
java类的成员初始化顺序
最近在看Java编程思想,准备系统的巩固一下基础知识。       对于java类的成员初始化顺序,总结记录一下;       在一个简单无继承关系的类中 ,通过构造器初始化,直接上代码:       public class test { /** * Description * @param args */ public stat
java中的类的初始化顺序
一直对这个问题比较模糊,今天终于有时间来好好梳理下类的初始化顺序。 几个初始化的成分 静态:静态成员变量,静态代码块,静态成员方法。 非静态:非静态成员变量,非静态成员方法 构造代码块 举例说明: class Insect { private int i = 9; protected int j; //构造方法 Insect(){ Sys
Java中类的初始化顺序
Java中类的初始化顺序 一.测试单类的初始化顺序 public class ClassInitOrderTest {   //静态变量 public static String staticField = "static field";   //静态代码块 static { System.out.println(staticField); Sys...
Java类的初始化顺序探究
有时候对于类的初始化顺序会有点迷糊,最近看了《Java编程思想》,选取了书中(第四版)146页的一段代码进行探究。 package unit9; class Insect { private int i = 9; protected int j; Insect() { System.out.println("i= " + i + ", j= " + j); j = 39; }
java 类内部初始化顺序
创建对象时,先初始化类的成员变量/成员对象,再执行构造函数。 package com........test; public class Test { public static void main(String[] args){ House house =new House(); house.f(); } } class House{ Window
JAVA类的初始化顺序
java类的初始化顺序是面试中常问到的一个问题,下面通过一个加载例子就可以让我们深入了解java类的加载顺序,而不是死记硬背。 先定义一个父类Fatherpublic class Father { public static String str1 = "Father静态字符串"; public String str2 = "Father普通字符串"; static {
java 类的初始化顺序
[code="java"] public class FatherClass { public final int aa= getIntValuea(); public FatherClass(){ System.out.println("FatherClass construtor"); } public int getIntValuea(){ Sy...
java中类的初始化顺序。
class的初始化顺序 通常是以下这样的初始化顺序: (static对象和static代码块,依据他们的顺序进行初始化)>成员变量>构造函数 测试代码 public class Test{ public static void main(String[] args) { new B(); } } class A { stati...
java中类的初始化顺序
先加载static代码块,再加载代码块,最后构造函数,有多个就按顺序加载。 如果有子类,先加载父类static代码块,然后子类static代码块,父类代码块,构造函数,子类代码块,构造函数。 属性比代码块先执行,没有初始化的话,就默认。int默认0,对象默认null,boolean默认false. static只执行一次,其他的每次实例化都会加载一遍。 static方法不能用this,因为
Java类中的初始化顺序
根据《Thinking in Java》相关章节及自己的理解举例来说明类初始化顺序。public class InitialOrder { private static String staticField = "Static Field Initial"; private String field = "Field Initial"; static { Syste
java类中的初始化顺序
参考:https://blog.csdn.net/owenchan1987/article/details/52879774 https://www.cnblogs.com/mcxiaotan/p/8059173.html   Java程序初始化一般遵循3个原则: 1. 静态对象(变量)优先于非静态对象(变量)初始化。其中静态对象(变量)只初始 化一次,而非静态对象(变量)可能会初始化很多...
关于JAVA类的初始化顺序
此文章介绍了JAVA的初始化顺序,对于一些对JAVA初始化比较混乱的道友很有帮助
Java类内部的初始化顺序
在Java中初始化变量时,首先执行静态变量的声明,然后执行静态初始化块的执行语句,然后声明非静态的变量,然后执行初始化块的执行语句,最后执行构造器中的初始化语句。 下面通过代码演示一下: public class TextDemo { private String name = "aa"; private String sex = "ss"; private static ...
java 类中的初始化顺序
public class InitObject { private int id; private String name; private static int age; public InitObject(){ System.out.println(id); System.out.println(na...
Java 类的初始化顺序
一、Java 类的初始化顺序 1、父类的静态代码块 2、子类的静态代码块 3、父类非静态代码块 4、父类构造函数 5、子类非静态代码块 6、子类构造函数 (1)由于入口main方法也是静态方法,所以可以看出来,静态方法执行前会执行本类以及父类的静态代码块,但是不一定执行构造函数和非静态代码块,因为只有通过new或者Class的newInstance方法才会调用构造函数。
类的初始化顺序问题
  一道面试题目,看代码:   public class Testinitial { public static void main(String[] args) { // 第一种情况 int a = Test2.a; // 第二种情况 // int a = Test2.b; System.out.println("main method"); }...
类的初始化顺序
静态变量、静态块 > 变量、实例块 > 构造器 静态变量、静态块之间是根据他们在类中出现的顺序来决定;变量、实例块之间也是根据他们在类中出现的顺序来决定 父类静态变量、静态块 > 子类静态变量、静态块 > 父类变量、实例块、构造器 > 子类变量、实例块、构造器...
java类 静态实例初始化顺序
首次加载类时(创建对象/调用类的静态成员),java解释器必须查找类的路径,定位并载入其class文件。之后执行所有静态(static)初始化动作。静态初始化只在class对象首次加载时执行一次。 之后执行所有非静态字段(成员变量)的初始化。 最后执行构造器方法。
Java的<init>,<cinit>与类的初始化顺序
<init>与<clinit><init>Java在编译之后会在字节码文件中生成<init>方法,称之为实例构造器,该实例构造器会将语句块,变量初始化,调用父类的构造器等操作收敛到<init>方法中,收敛顺序(这里只讨论非静态变量和语句块)为:
类继承的初始化顺序类,继承的初始化顺序
类继承的初始化顺序类继承的初始化顺序类继承的初始化顺序类继承的初始化顺序
相关热词 c#检测非法字符 c#双屏截图 c#中怎么关闭线程 c# 显示服务器上的图片 api嵌入窗口 c# c# 控制网页 c# encrypt c#微信网页版登录 c# login 居中 c# 考试软件