code1:
class aa{
int i= 3;
public void dd()
{
if(i==3){
return;
// System.out.println("nfds");
   }
}
   public static void main(String[]args)
{
new aa().dd();
}
}
code2:
class aa{
int i= 3;
public void dd()
{
if(i==3){
return;
// System.out.println("nfds");
   }
}
   public static void main(String[]args)
{
new aa();
}
}
code1正确,code2错误。为什么实例化一个类之后还要调用它的方法呢?实例化类之后不是把它里面的方法也实例化了吗?(code1中的new aa().dd();正确;code2中的new aa(); 错误。)

解决方案 »

  1.   

    code2也是正确的! 我也运行过了,没有错误,你的错误时什么,帖出来!
      

  2.   

    两个都没错!!!jdk1.5测试过了
    楼主的错误是什么?贴出来看看。
      

  3.   

    我也测试了, jdk1.5,的确可以运行
      

  4.   

    编译没有错误啊,我没说是编译错误啊,我是说逻辑错误,code2不能打印出“nfds”字符串。也就是没有加载方法。
      

  5.   

    回复人: eoeac(FreeStyle) ( ) 信誉:100  2005-09-10 01:48:00  得分: 0  
    当你要使用一个类里的方法必须要先实例化这个类(将方法写成静态的除外),如果单单实例化这个类,不会自动调用它的方法。
    =========================================================================================
    为什么实例类化之后还不能调用方法呢?java应该有这样的功能,实例化之后就自动调用它的方法,不是很方便了吗?干嘛还要一个一个调用?
      

  6.   

    你用了return ,当然不能打印出nfds啊
      

  7.   

    非常非常不好意思,代码在弄上这里的时候弄错了,注释应该打在return上的。
      

  8.   

    那位仁兄能告诉小弟,类、对象、变量之类的东西在内存里是如何存储和工作的,小弟刚开始学编程这东西就是从java这种纯oop开始的,对java在内存里工作的原理很模糊。
      

  9.   

    类实例化之后是不会自动调用它的其它方法的,只会自动调用它的构造方法。
    另外,你用了return ,打印nfds文字的这条语句是不可达的。当然不能打印出nfds啊