请问:以下两快代码有什么区别?
if(1 == 1)
{
   ...
}int i=1;
if(i == 1)
{
  ...
}
我要是在这两个if语句体中写代码,会有什么不同?

解决方案 »

  1.   

    结果都返回TRUE,具体里面是怎么比的就不知道的,应该如果是INT的都一样的吧!
      

  2.   

    可是,如果我要是写一个类比如叫MyClass,并在这个类中重载finalize()函数,
    if(1 == 1)
    {
       MyClass myClass1=new MyClass();
    }int i=1;
    if(i == 1)
    {
      MyClass myClass2=new MyClass();
    }
    System.gc();//此时,会调用myClass2中的finalize()函数,但并不调用myClass1的finalize()函数,也就是说Garbage Collection并没有应用到myClass1上,这是为什么?
      

  3.   

    int i=1;
    if(i == 1)
    {
      MyClass myClass2=new MyClass();
    }
    if(1 == 1)
    {
       MyClass myClass1=new MyClass();
    }
    这样就会调用myClass1的方法了。
      

  4.   

    如果真需要这样的话,还是用if(true)吧
      

  5.   

    我觉得根本的区别还是在
    if( 1 == 1)

       ...


    int i=1;
    if( i== 1)
    {
      ...
    }
    上,在第一个if块中new的对象不会调用垃圾收集,但是在第二个if块中new的对象就会被垃圾收集。顺便指出一下,第一个if块应该和以下两个块等价:
    if(true)
    {
     ...
    }

    {
      ...
    }
      

  6.   

    同意               qqbz(qqbz)
      

  7.   

    if( 1 == 1)

        MyClass myClass2=new MyClass();

     在编译成class后变成
     MyClass myClass2=new MyClass();函数方法结束后才回收myClass2,myClass2作用域变成整个函数体了。
      

  8.   

    那么,为什么在编译成class文件后要改变成MyClass myClass2 = new MyClass();
    呢?谢谢