关于java初始化的问题

关于java的初始化觉得自己不懂,只能理解到这里,希望大牛能指点一下

初始化遵循

1.之建立引用时

先初始化父类的静态变量,以及静态的代码段

再初始化子类的静态变量,以及静态的代码段

2创建对象时

先初始化父类的静态变量,以及静态的代码段

再初始化子类的静态变量,以及静态的代码段

接着初始化父类的普通(全局)变量,以及普通的代码段以及构造函数

再初始化子类的(全局)普通变量,以及普通的代码段以及构造函数

这里静态的只存在一份,每次建立引用不会重复初始化并且不是存在于堆中,

而(全局)普通变量不建立对象是不会初始化的也不存在

静态的只是初始化一次,也就是初次使用时初始化,构造函数与非静态变量每次新建时都会初始化

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-27 11:55:50

关于java初始化的问题的相关文章

java初始化

1  无继承情况下的Java初始化顺序: class Sample { Sample(String s) { System.out.println(s); } Sample() { System.out.println("Sample默认构造函数被调用"); } } class Test{ static Sample sam=new Sample("静态成员sam初始化"); Sample sam1=new Sample("sam1成员初始化")

Java初始化顺序

1.在类的内部,变量的定义的先后顺序决定了初始化顺序,即使变量定义散布于方法定义间,他们仍旧会在任何方法(包括构造器)被调用之前得到初始化 2.静态数据的初始化 class Bowl{ Bowl(int marker){ print("Bowl("+marker+")"); } void f1(int marker){ print("f1("+marker+")"); } class Table{ static Bowl bo

[转]Java初始化顺序总结 - 静态变量、静态代码块、成员变量、构造函数

Java初始化顺序1在new B一个实例时首先要进行类的装载.(类只有在使用New调用创建的时候才会被java类装载器装入)2,在装载类时,先装载父类A,再装载子类B3,装载父类A后,完成静态动作(包括静态代码和变量,它们的级别是相同的,安装代码中出现的顺序初始化)4,装载子类B后,完成静态动作类装载完成,开始进行实例化1,在实例化子类B时,先要实例化父类A2,实例化父类A时,先成员实例化(非静态代码)3,父类A的构造方法4,子类B的成员实例化(非静态代码)5,子类B的构造方法 先初始化父类的静

Java 初始化字段方式和顺序

Java 初始化字段方式和顺序: 类加载时直接初始化静态字段; 类加载时调用静态方法初始化静态字段; 实例化对象时,在调用构造函数之前代码块中初始化字段; 实例化对象时,在调用构造函数之时初始化字段; 初始化字段顺序1->2->3->4 代码如下: public class Employee { //实例化对象时,在调用构造函数之前前初始化字段; private int id; // 实例化对象时初始化为0 private String name; // 实例化对象时初始化为null p

Java初始化顺序(转)

Java初始化顺序 1  无继承情况下的Java初始化顺序: class Sample { Sample(String s) { System.out.println(s); } Sample() { System.out.println("Sample默认构造函数被调用"); } } class Test{ static Sample sam=new Sample("静态成员sam初始化"); Sample sam1=new Sample("sam1成员

图解 & 深入浅出Java初始化与清理:构造器必知必会

Writer      :BYSocket(泥沙砖瓦浆木匠) 微         博:BYSocket 豆         瓣:BYSocket FaceBook:BYSocket Twitter    :BYSocket 在面向对象编程中,编程人员应该在意"资源".比如 ? 1 <font color="#000000">String hello = "hello": </font> 在代码中,我们很在意在内存中Stri

java初始化问题,其实记住三点就ok了~~~

看到帖子讨论,继续讨论java初始化问题,然后我debug了下,和自己想的差不多.然后写出来分享给大家,记住三点就不会错了啊啊啊啊啊啊啊啊~~~坑~~ package com.lean; public class InitJava { /* * static静态变量初始化,构造函数调用(每次都执行,初始化非静态变量,方法,目的就是防止构造函数调用非静态方法属性) * 构造函数执行,main函数执行 * * 其实记住三点就行了~~~~搞的我都郁闷死了,给大家总结下: * 1.先顺序加载static

(原)Java初始化过程

先看一个demo,然后进行归纳. 1 class X{ 2 static M m=new M(); 3 Y y=new Y(); 4 public X(){ 5 System.out.print("X"); 6 } 7 } 8 class Y{ 9 public Y(){ 10 System.out.print("Y"); 11 } 12 } 13 14 class M{ 15 public M(){ 16 System.out.print("M"

java初始化的执行顺序

Java初始化(initialization)其实包含两部分: 1.类的初始化(initialization class & interface)2.对象的创建(creation of new class instances).因为类的初始化其实是类加载(loading of classes)的最后一步,所以很多书中把它归结为“对象的创建”的第一步.其实只是看问题的角度不同而已.为了更清楚的理解,这里还是分开来. 顺序:应为类的加载肯定是第一步的,所以类的初始化在前.大体的初始化顺序是:类初始化

Java初始化生命周期

package com.init; abstract class Glyph { void draw() { System.out.println("Glyph.draw()"); } Glyph() { System.out.println("Glyph() before draw()"); draw(); System.out.println("Glyph after draw()"); }} class RoundGlyph extends