关于return和void的问题?

Lengruobing423 2012-06-20 01:52:59
我是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”类型。原因是什么?
...全文
830 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
xlhb 2012-06-24
  • 打赏
  • 举报
回复
对于void你没有理解好,void表示无返回值,即使return null都无法通过编译,既然C()无返回值,当然无法println
z744489075 2012-06-24
  • 打赏
  • 举报
回复
写了void 就不用写return 其他的一律要写return
Lengruobing423 2012-06-24
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 的回复:]
关于为什么C里可以 JAVA里不行的东西直接去问编译器
C语言还叫C语言呢 JAVA叫JAVA语言 你能告诉我为什么吗?
[/Quote]嗯~~~是的~~~就是要问编译器的~~~
gaoliang19880714 2012-06-23
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
return 是方法内的跳出语句,此关键字的作用就是跳出这个方法体并返回一个值,这个值根据方法定义时事先声明的返回类型而定,比如定义了一个方法是 int A(){return 2;} 那么你在使用return 跳出方法时就必须返回一个int值才可以,同理,void关键字的含义是当前方法不会返回任何数据,只会执行逻辑,因此return 后面不能返回任何类型包括null。而System.out.pri……
[/Quote]


5楼讲的很清楚了
Edward1688 2012-06-23
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
return 是方法内的跳出语句,此关键字的作用就是跳出这个方法体并返回一个值,这个值根据方法定义时事先声明的返回类型而定,比如定义了一个方法是 int A(){return 2;} 那么你在使用return 跳出方法时就必须返回一个int值才可以,同理,void关键字的含义是当前方法不会返回任何数据,只会执行逻辑,因此return 后面不能返回任何类型包括null。而System.out.pri……
[/Quote]

学习学习
logic_well 2012-06-23
  • 打赏
  • 举报
回复
关于为什么C里可以 JAVA里不行的东西直接去问编译器
C语言还叫C语言呢 JAVA叫JAVA语言 你能告诉我为什么吗?
zhangshengyuan1545 2012-06-21
  • 打赏
  • 举报
回复
楼上给答案了
Lengruobing423 2012-06-20
  • 打赏
  • 举报
回复
为什么参数是void类型就不可以呢?那在C里面为什么可以呢?如int main(void){return 2;}这样就可以。
[Quote=引用 5 楼 的回复:]
return 是方法内的跳出语句,此关键字的作用就是跳出这个方法体并返回一个值,这个值根据方法定义时事先声明的返回类型而定,比如定义了一个方法是 int A(){return 2;} 那么你在使用return 跳出方法时就必须返回一个int值才可以,同理,void关键字的含义是当前方法不会返回任何数据,只会执行逻辑,因此return 后面不能返回任何类型包括null。而System.out.pri……
[/Quote]
Lengruobing423 2012-06-20
  • 打赏
  • 举报
回复
但是return后然后又写一些语句在C里面不会出错。
返回值是void类型,为什么不能打印了?具体原因是什么?
在[Quote=引用 4 楼 的回复:]
return表示结束当前方法了。方法都结束了,这个方法后面的逻辑肯定不会执行了。 所以return后面的代码肯定不能执行,编译就通不过。
方法定义的什么返回值, 在return的时候,就必须返回相同类型的返回值。
//System.out.println(new He3.C());//这里为什么没有了 这个方法的返回值是void,
相当于System.out.println(void); ……
[/Quote]
RandomAccessFile 2012-06-20
  • 打赏
  • 举报
回复
void 表示无返回值的意思
snowpeak_yu 2012-06-20
  • 打赏
  • 举报
回复
think in java 确实不错,含金量很高,适合各技术层面的人看,不论是新手还是高手。
wonkju 2012-06-20
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]
不过,作为新手,个人建议: 不要先读 《think in java》

这里有个思路,你看看:
http://topic.csdn.net/u/20120413/15/1d1667c1-f571-45f3-abeb-9e5f9f184eaa.html

以前发的帖子……
[/Quote]很多人都说新手不怎么适宜从《Think in java》开始
wonkju 2012-06-20
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]
不过,作为新手,个人建议: 不要先读 《think in java》

这里有个思路,你看看:
http://topic.csdn.net/u/20120413/15/1d1667c1-f571-45f3-abeb-9e5f9f184eaa.html

以前发的帖子……
[/Quote]很多人都说新手不适宜从《Think in java》开始。
蘑菇頭 2012-06-20
  • 打赏
  • 举报
回复
不过,作为新手,个人建议: 不要先读 《think in java》

这里有个思路,你看看:
http://topic.csdn.net/u/20120413/15/1d1667c1-f571-45f3-abeb-9e5f9f184eaa.html

以前发的帖子……
蘑菇頭 2012-06-20
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

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

解释的 很清楚了, 就不浪费笔墨了……
snowpeak_yu 2012-06-20
  • 打赏
  • 举报
回复
return 是方法内的跳出语句,此关键字的作用就是跳出这个方法体并返回一个值,这个值根据方法定义时事先声明的返回类型而定,比如定义了一个方法是 int A(){return 2;} 那么你在使用return 跳出方法时就必须返回一个int值才可以,同理,void关键字的含义是当前方法不会返回任何数据,只会执行逻辑,因此return 后面不能返回任何类型包括null。而System.out.println()这个打印语句其实也是一个方法,这个方法会要求传进一个参数进来,而void方法并不会返回任何参数,因此不能作为参数。
dai_ 2012-06-20
  • 打赏
  • 举报
回复
return表示结束当前方法了。方法都结束了,这个方法后面的逻辑肯定不会执行了。 所以return后面的代码肯定不能执行,编译就通不过。
方法定义的什么返回值, 在return的时候,就必须返回相同类型的返回值。
//System.out.println(new He3.C());//这里为什么没有了 这个方法的返回值是void,
相当于System.out.println(void); 这个编译肯定就报错了。

阿甘1976 2012-06-20
  • 打赏
  • 举报
回复
对于void你没有理解好,void表示无返回值,即使return null都无法通过编译,既然C()无返回值,当然无法println.
阿冷 2012-06-20
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

可以在可能有效执行所有代码前提下,的任意位置。
比如一下就可以了。
void A(){
System.out.println();
if(条件){
return;
}
System.out.println();
}


//System.out.println(new He3.C());//这里为什么没有了
改为
//System.out.println(n……
[/Quote]
if里面加个有效条件
阿冷 2012-06-20
  • 打赏
  • 举报
回复
可以在可能有效执行所有代码前提下,的任意位置。
比如一下就可以了。
void A(){
System.out.println();
if(){
return;
}
System.out.println();
}


//System.out.println(new He3.C());//这里为什么没有了
改为
//System.out.println(new He3().C());//这里为什么没有了

62,616

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧