偶是群里的 ァSurenessξ 给你发短消息没回,本来想在QQ群里给你说呢,算了在这里我给你说吧。
第一个问题:
是先执行字段,还是先执行构造方法,他们的顺序问题:
如果你的字段里面都是只声明,并且没有进行显示赋值的话,基本数据类型系统会使用默认值,其他的必须显示的在构造里赋值,所以就不去执行字段的声明那块了,直接进构造函数了。相反如果你的字段里面声明了含有显示赋值的字段,他会先执行字段,去初始化字段的,具体你可以写一个程序测试下,一个给字段赋值,一个给字段不赋值,看下结果就明白了(用断点)。
第二个问题:
//这里跟方法签名里的参数类型不同也可以吗?
因为任何成员都是属于Object的,Object就相当于上帝,有了上帝才能制造事物,所以Object兼容任何类型。
//这个for循环不明白,一直创建对象,又没有数组将值放在一起,如何可以输出这么多对象的值呢?
首先你看程序声明变量时,声明了一个private Node first = null变量,一开始是为空的,当你开始压栈时,第一次压,First还是空的,而到了第二次first就存的是上一次(也就是第一次)压进来对象的引用,就等于后一次进来的对象字段里存的是前一次进来的应用(相当于地址),这样就可以把他们联系起来了,成一个链状。在打印的时候,每一次都要调用Posh()方法,在Posh方法里:
else {
object temp = first.Value;
first = first.Next;
count--;
return temp;
}
第一次出栈调用的是最后一次压进来的,然后再把最后一次一进来字段里存的对象引用赋给变量first,当循环再转一次的时候,就操作的是给变量first里存的对象,然后在存入这次first存的对象的前一次,就这样循环,当达到最后一次时,所存的是NULL,所以就跳出了。
表达能力有限,不知你看的懂不?很晚了,我睡了,明天还上课呢,有问题明天QQ群里再讨论。
第一个问题:
是先执行字段,还是先执行构造方法,他们的顺序问题:
如果你的字段里面都是只声明,并且没有进行显示赋值的话,基本数据类型系统会使用默认值,其他的必须显示的在构造里赋值,所以就不去执行字段的声明那块了,直接进构造函数了。相反如果你的字段里面声明了含有显示赋值的字段,他会先执行字段,去初始化字段的,具体你可以写一个程序测试下,一个给字段赋值,一个给字段不赋值,看下结果就明白了(用断点)。
第二个问题:
//这里跟方法签名里的参数类型不同也可以吗?
因为任何成员都是属于Object的,Object就相当于上帝,有了上帝才能制造事物,所以Object兼容任何类型。
//这个for循环不明白,一直创建对象,又没有数组将值放在一起,如何可以输出这么多对象的值呢?
首先你看程序声明变量时,声明了一个private Node first = null变量,一开始是为空的,当你开始压栈时,第一次压,First还是空的,而到了第二次first就存的是上一次(也就是第一次)压进来对象的引用,就等于后一次进来的对象字段里存的是前一次进来的应用(相当于地址),这样就可以把他们联系起来了,成一个链状。在打印的时候,每一次都要调用Posh()方法,在Posh方法里:
else {
object temp = first.Value;
first = first.Next;
count--;
return temp;
}
第一次出栈调用的是最后一次压进来的,然后再把最后一次一进来字段里存的对象引用赋给变量first,当循环再转一次的时候,就操作的是给变量first里存的对象,然后在存入这次first存的对象的前一次,就这样循环,当达到最后一次时,所存的是NULL,所以就跳出了。
表达能力有限,不知你看的懂不?很晚了,我睡了,明天还上课呢,有问题明天QQ群里再讨论。
认真的对待每一天!