日期:2014-05-20  浏览次数:20769 次

一个基础练习题,菜鸟不会求高手解惑!
Java code

 class HeapQuiz {
    int id = 0;

    /**
     * @param args
     */
    public static void main(String[] args) {
        
        int x = 0;
        HeapQuiz[] hq = new HeapQuiz[5];
        while(x<3){
            hq[x] = new HeapQuiz();
            hq[x].id = x;
            x = x+1;
        }
        hq[3] = hq[1];
        
        hq[4] = hq[1];
        
        hq[3] = null;
        hq[4] = hq[0];
        hq[0] = hq[3];
        hq[3] = hq[2];
        hq[2] = hq[0];
        
        // TODO 自动生成方法存根

    }

}


题目要求引用变量hq[0],hq[1],hq[2],hq[3],hq[4]和堆对象id=0,id=1,id=2哪个几个是相对应起来的?

我不明白ID=1,2是怎么来的?因为id根本就没有增加过啊。

这里面貌似就hq[0].id=0,hq[1].id=1,hq[2].id=2,其中id始终没有变过。

还有我看的书里面经常有这样2个不同的定义方式
Java code
class a{
             int x;
           public static void main(){
           }}

Java code
class a{
public static void main(){
}
}
class b{
int x;
}


这2个有啥不同的?
运行起来也不一样,烦躁啊。书上又不说清楚,有时候搞的我都不知道哪个是哪个,怎么用了。

求高手解惑。谢谢。

------解决方案--------------------
题目要求引用变量hq[0],hq[1],hq[2],hq[3],hq[4]和堆对象id=0,id=1,id=2哪个几个是相对应起来的?
hq[0] -- null
hq[1] -- id 1
hq[2] -- null
hq[3] -- id 2
hq[4] -- id 0

我不明白ID=1,2是怎么来的?因为id根本就没有增加过啊。
x = x+1 ;这里递增的

这里面貌似就hq[0].id=0,hq[1].id=1,hq[2].id=2,其中id始终没有变过。
hq[x].id = x; //这里的id=x,而x在上面说的地方递增,所以相当于id递增


这2个有啥不同的?
运行起来也不一样,烦躁啊。书上又不说清楚,有时候搞的我都不知道哪个是哪个,怎么用了。
第一种只有一个类,它有一个属性,并且带有一个main方法
第二种有两个类,第一个是带有main方法的类,第二个类是带有一个属性的类,相当于第一种的分解,即把第一种的main方法写到一个单独的类
运行起来,当然是以主类名为启动类,所以稍微不同
第一种一般是开发一个类为了方便直接在该类写个main方法作为测试
第二种一般是正式用的类,不带main方法,用另一个带main方法的启动类来测试它