A. 关于java继承中初始化的执行顺序
成员变量是在对象实例化之前执行,
针对c类的话,c()是无参数的构造方法,作用来实例化c类的对象,但是b是他的成员变量,只不过类型是B类.
对象的初始化的过程顺序,在执行无参构造方法之前先要初始化成员变量
B. Java类的实例化顺序是什么样的Java线程同步的方式有哪些
引言:java是在1990年初 ,被詹姆斯•高斯林等人开发的一门面向对象的编程语言。起初,java被称为0ak,来经过发展0ak改名为java,与1995年的五月份正式向大家发布。
java的实例化顺序在继承没有的情况
单独一个类的场景下,初始化顺序为依次为静态数据,继承的基类的构造函数,成员变量,被调用的构造函数。
其中静态数据只会初始化一次。(静态数据包括静态代码块和静态变量,每个类的静态数据只会初始化一次)
在继承的情况下
添加两个基类,让继承父亲,父亲继承祖父。
继承的情况就比较复杂了。由继承了基类,还将往上回溯,递归地调用基类的无参构造方法。
在我们的例子中,在初始化静态数据后,会先往上追溯,调用父的默认构造方法,此时再往上追溯到爷爷的默认构造方法。
无论是java还是什么别的东西他都体现了现代社会与信息技术的不断发展,人们在进行进行技术开发时也有了越来越多的方法。程序类的工作也有了更为快捷的方法,这为信息技术的发展也提供了更好的发展方法
C. Java 构造方法初始化顺序
初始化子类,调用子类有参的时候默认情况下也是先去调用父类的无参构造,除非你在子类的构造方法中使用super来指明调用父类中的哪个构造方法。
D. java类的初始化顺序问题,求高手解答。
你好:
1、类只有在使用New调用创建的时候才会被JAVA类装载器装入
2、JAVA类首次装入时,会对静态成员变量或方法进行一次初始化
3、创建类实例时,首先按照父子继承关系进行初始化
4、类实例创建时候,首先初始化块部分先执行,然后是构造方法;然后从本类继承的子类的初始化块执行,最后是子类的构造方法
所以这道题的运行结果是:
子类变量初始化
父类Test3构造
子类print变量:0
子类变量初始化
子类test4构造
父类print变量:25
E. 关于JAVA初始化及初始化顺序的问题,谢谢~~
问题1:
在Java中,类装载器把一个类装入Java虚拟机中,要经过三个步骤来完成:装载、链接和初始化,其中链接又可以分成校验、准备和解析三步,除了解析外,其它步骤是严格按照顺序完成的,各个步骤的主要工作如下:
装载:查找和导入类或接口的二进制数据;
链接:执行下面的校验、准备和解析步骤,其中解析步骤是可以选择的;
校验:检查导入类或接口的二进制数据的正确性;
//下面这句话很重要
准备:给类的静态变量分配并初始化存储空间;
解析:将符号引用转成直接引用;
初始化:激活类的静态变量的初始化Java代码和静态Java代码块。
初始化类中属性是静态代码块的常用用途,但只能使用一次。
在你补充的例子中,该类没有被实例化,也就是未被运行,只是被分配了内存空间
问题2:在实例化Insect()时,打印j,此时系统找不到变量j,因为j不是全局变量,而是局部变量,而且定义在后面。
如果改为
Insect(){
int j=39;
System.out.println("i = "+i+", j = "+j);
}
就可以了
变量放在方法外面为该类的全部变量,在所有方法中可用
在方法内定义的变量只能在该方法中使用,而且必须先定义后使用。
F. java 中的继承的初始化顺序 是什么意思
//初始化是在堆内存中为Java对象分配内存;比如Object object;和Object object= new Object();前一个仅仅是声明了一个对象,在栈内存有个区域存object,没有指向任何一块堆内存的内容,这种出现异常就是空指针,第二个就在栈内存和堆内存都有内容
super();//调用父类的构造方法,目的是为了在子类初始化的开始阶段获取到父类的属性和方法
//这里子类只能调用父类的无参构造,从super();这里就能看出来,括号里没参数,所以设计类的时候,如果打算让别的类继承就提供一个无参构造让继承它的子类调用
G. Java的静态块和初始化块分别何时执行有什么区别
静态初始化块:当类第一次加载时执行。
非静态初始化块:非静态初始化块会在构造函数执行时,且在构造函数主体代码执行之前被执行。
区别如下:
1、执行次数不同
静态块只执行一次,初始化块可以执行多次。
2、作用不同
静态初始化块仅能初始化类变量,即static修饰的数据成员。
非静态初始化块可以初始化类的实例变量。
(7)java类初始化顺序扩展阅读:
使用Java静态代码块注意事项:
1、它是随着类的加载而执行,只执行一次,并优先于主函数。具体说,静态代码块是由类调用的。类调用时,先执行静态代码块,然后才执行主函数的。
2、静态代码块其实就是给类初始化的,而构造代码块是给对象初始化的。
3、静态代码块中的变量是局部变量,与普通函数中的局部变量性质没有区别。
4、一个类中可以有多个静态代码块。
5、对于静态变量、静态初始化块、变量、初始化块、构造器,它们的初始化顺序依次是(静态变量、静态初始化块)>(变量、初始化块)>构造器。
H. java中面向对象中的类的初始化调用顺序是什么
对象的初始化顺序:
(1)加载父类(以下序号相同,表明初始化是按代码从上到下的顺序来的)
1.为父类的静态属性分配空间并赋于初值
1.执行父类静态初始化块;
(2)加载子类
2.为子类的静态属性分配空间并赋于初值
2.执行子类的静态的内容;
(3)加载父类构造器
3.初始化父类的非静态属性并赋于初值
3.执行父类的非静态代码块;
4.执行父类的构造方法;
(4)加载子类构造器
5.初始化子类的非静态属性并赋于初值
5.执行子类的非静态代码块;
6.执行子类的构造方法.
总之一句话,静态代码块内容先执行(父先后子),接着执行父类非静态代码块和构造方法,然后执行子类非静态代码块和构造方法。
I. Java:类成员的初始化顺序 类加载 疑问(如图)
一段程序的完整执行过程是先编译,然后加载到jvm,然后初始化,然后你才能使用(当然中间还有需要细节)。初始化是执行类构造器方法的过程,类构造器方法是由编译器自动收集类中的所有类变量的赋值动作和静态语句块中的语句合并产生的(不是类的构造方法)。所以,简而言之,一个类在初始化的时候,会先执行它的静态代码块,当然,如果这个类有父类的话,同样的道理,如果发现该父类没有初始化,则需要先对其父类进行初始化,再对该类进行初始化。
至于一个类在什么时候初始化,简单的说,当程序第一次用到这个类时候就会对其进行初始化(前提是其没有进行过初始化)。
J. 大大们可以描述下,java的对象和变量初始化时的执行顺序吗
public class TestDG {
public static void main(String[] args){
new B();
System.out.println("========================再来一次==========");
new B();
}
}
class A{
static{
System.out.println("我是老爸静态初始化块,我第1");
}
{
System.out.println("我是初始化块,我第3");
}
A(){
System.out.println("我是老爸构造器,我第4");
}
}
class B extends A{
static{
System.out.println("我是儿子静态初始化块,我第2");
}
{
System.out.println("我是儿子初始化块,我第5");
}
B(){
System.out.println("我是儿子构造器,我第6");
}
}