我是java初学者:
return关键字的用法:1.已经做完,离开此方法;2.如果此方法产生一个值,这个值放在return后面
如果不想返回值,就指示方法返回void(空),此时return的作用只是退出此方法,但是书上(Thinking in java)说,没有必要到方法借宿是才离开,可在任何地方返回。这个“任何地方”很不理解,是在方法体的“任何地方”吗?还是在调用它时的“哪个地方”?
我想的是在方法体的任何地方:void A(){System.out.println();return;System.out.println();}如果把这个方法放在一个类中在编译时不成功,会出现后面return后面的那句话无法访问的访问的错误,那么说明我所理解的“任何地方”是错误的?那这个“任何地方”到底是个什么地方?
//本例主要是要求理解方法中的return
class He3{//解决这个类,将以三种不同方法顺序有条件执行过程
int A(){return 2;}
float B(){return 3.14f;}
void C(){return;}
boolean D(){return true;}
     public static void main(String[] args){
//He3 h=
//void h=
//He3 h1=null;
new He3().C();
System.out.println(new He3().A());
System.out.println(new He3().B());
//System.out.println(new He3.C());//这里为什么没有了
System.out.println(new He3().D());
}
}
//System.out.println(new He3.C());//这里为什么没有了
就是这句话在编译时不成功,会出现此处不允许使用“void”类型。原因是什么? 

解决方案 »

  1.   

    可以在可能有效执行所有代码前提下,的任意位置。
    比如一下就可以了。
    void A(){
    System.out.println();
     if(){
        return;
      }
     System.out.println();
    }
    //System.out.println(new He3.C());//这里为什么没有了
    改为
    //System.out.println(new He3().C());//这里为什么没有了
      

  2.   

    对于void你没有理解好,void表示无返回值,即使return null都无法通过编译,既然C()无返回值,当然无法println.
      

  3.   

    return表示结束当前方法了。方法都结束了,这个方法后面的逻辑肯定不会执行了。 所以return后面的代码肯定不能执行,编译就通不过。 
    方法定义的什么返回值, 在return的时候,就必须返回相同类型的返回值。
    //System.out.println(new He3.C());//这里为什么没有了 这个方法的返回值是void,
    相当于System.out.println(void); 这个编译肯定就报错了。 
      

  4.   

    return 是方法内的跳出语句,此关键字的作用就是跳出这个方法体并返回一个值,这个值根据方法定义时事先声明的返回类型而定,比如定义了一个方法是 int A(){return 2;} 那么你在使用return 跳出方法时就必须返回一个int值才可以,同理,void关键字的含义是当前方法不会返回任何数据,只会执行逻辑,因此return 后面不能返回任何类型包括null。而System.out.println()这个打印语句其实也是一个方法,这个方法会要求传进一个参数进来,而void方法并不会返回任何参数,因此不能作为参数。
      

  5.   

    不过,作为新手,个人建议:  不要先读 《think in java》这里有个思路,你看看:
    http://topic.csdn.net/u/20120413/15/1d1667c1-f571-45f3-abeb-9e5f9f184eaa.html以前发的帖子……
      

  6.   

    很多人都说新手不适宜从《Think in java》开始。
      

  7.   

    很多人都说新手不怎么适宜从《Think in java》开始
      

  8.   

    think in java 确实不错,含金量很高,适合各技术层面的人看,不论是新手还是高手。
      

  9.   

    但是return后然后又写一些语句在C里面不会出错。
    返回值是void类型,为什么不能打印了?具体原因是什么?
      

  10.   

    为什么参数是void类型就不可以呢?那在C里面为什么可以呢?如int main(void){return 2;}这样就可以。
      

  11.   

    关于为什么C里可以 JAVA里不行的东西直接去问编译器
    C语言还叫C语言呢 JAVA叫JAVA语言 你能告诉我为什么吗?
      

  12.   

    写了void 就不用写return  其他的一律要写return
      

  13.   

    对于void你没有理解好,void表示无返回值,即使return null都无法通过编译,既然C()无返回值,当然无法println