关于构造函数 类实例化时会先初始化成员变量,所以会先执行Tag t1 = new Tag(1); 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 首先执行定义变量或对象的语句,以及static块然后是构造函数最后是方法(当然要被调用才能执行) 这个例子应该是JAVA编程思想中的吧。 class中的初始化次序取决于变量在class中的定义次序。变量定义也许会散落各处,而且有可能介于各个函数定义之间。但所有变量一定会在任何一个函数(甚至是构造函数)被调用之前完成初始化。所以例子中的:t1,t2,t3会在Card这个构造函数调用之前完成初始化。 比如有下面的代码public class MyObj { private Integer id; private String myName; private int age = 24; //变量初始值操作 public MyObj() { this.id = new Integer(1);//在构造函数里为变量赋值 this.myName = "truezerg"; //在构造函数里为变量赋值 this.age = 23; }}MyObj myObj = new MyObj();创建一个MyObj类的对象所发生事情的顺序是:1.首先分配内存来存放MyObj实例以及它的父类中的实例变量(在这里它的你类是java.lang.Object)2.给实例变量初始化为相应的缺省值。 object references 为 null ,其它类型按照各自的缺省值初始化比如上面的那段代码会将这三个属性设置成:id = null;myName = null;age = 0;3.调用这个MyObj的构造函数4.MyObj类的构造函数首先调用它父类的构造函数。.. 以此类推,直到 java.lang.Object的构造函数为止。5.当父类的构造函数一层层的返回,直到返回到MyObj的构造函数时,执行实例变量的设初始值操作(注意不是初始化)上面的代码将会做的是:age = 24;6.执行构造方法中的为实例变量赋值操作。上面的代码将会做的是:this.id = new Integer(1); //注意,这里又创建了一个Integer对象,对于Integer对象的创建也按照这个步骤执行。this.myName = "truezerg"; //这里又创建了一个String 对象,对于String 对象的创建也按照这个步骤执行。this.age = 23;7.将对象的引用 myObj 指向刚刚创建的这个对象 做了一个Java版的俄罗斯方块 如何防止JAVA的class被解密 一般我们在构造函数里会写多少东西? 大家好,我想问一下jsp中关于session对象的问题 抛出异常的实现问题 请问大于127的ascii怎么转成byte或者char javadoc如何生成英文的框架文档 时间的问题?请指教 兄弟门,给个网址 我的jbuilder applet 为什么不能响应键盘输入!请指点!我会继续加分的! 请教一个inteface的简单问题 那里有用java写的执行javascript的类库?
然后是构造函数
最后是方法(当然要被调用才能执行)
class中的初始化次序取决于变量在class中的定义次序。变量定义也许会散落各处,而且有可能介于各个函数定义之间。但所有变量一定会在任何一个函数(甚至是构造函数)被调用之前完成初始化。所以例子中的:t1,t2,t3会在Card这个构造函数调用之前完成初始化。
private Integer id;
private String myName;
private int age = 24; //变量初始值操作 public MyObj() {
this.id = new Integer(1);//在构造函数里为变量赋值
this.myName = "truezerg"; //在构造函数里为变量赋值
this.age = 23;
}
}MyObj myObj = new MyObj();创建一个MyObj类的对象所发生事情的顺序是:
1.首先分配内存来存放MyObj实例以及它的父类中的实例变量(在这里它的你类是java.lang.Object)
2.给实例变量初始化为相应的缺省值。 object references 为 null ,其它类型按照各自的缺省值初始化
比如上面的那段代码会将这三个属性设置成:
id = null;
myName = null;
age = 0;3.调用这个MyObj的构造函数
4.MyObj类的构造函数首先调用它父类的构造函数。.. 以此类推,直到 java.lang.Object的构造函数为止。
5.当父类的构造函数一层层的返回,直到返回到MyObj的构造函数时,执行实例变量的设初始值操作(注意不是初始化)
上面的代码将会做的是:
age = 24;6.执行构造方法中的为实例变量赋值操作。
上面的代码将会做的是:
this.id = new Integer(1); //注意,这里又创建了一个Integer对象,对于Integer对象的创建也按照这个步骤执行。
this.myName = "truezerg"; //这里又创建了一个String 对象,对于String 对象的创建也按照这个步骤执行。
this.age = 23;7.将对象的引用 myObj 指向刚刚创建的这个对象