黑马程序员技术交流社区

标题: return关键字的思考 [打印本页]

作者: 段金杰    时间: 2012-8-3 09:41
标题: return关键字的思考
是所有的函数都有return关键字?void定义的函数默认也有return?构造方法里面默认有return吗?能给一个具体解释更好
作者: 焦晨光    时间: 2012-8-3 09:54
本帖最后由 焦晨光 于 2012-8-3 10:22 编辑

是的 在java中所有的方法都有return关键字 包括void定义的方法、(构造方法下面解释)如果程序员没有在方法中加入return关键字,
java会自动在方法中加入return关键字

return 语句可以使其从当前方法中退出,返回到调用该方法的语句处,继续程序的执行。返回语句有两种格式。
1、return expression: 返回一个值给调用该方法的语句,返回值的数据类型必须与方法声明中的返回值类型一致。
   可以使用强制类型转换来使类型一致。
2、return: 当方法说明中用 void 声明返回类型为空时,应使用这种格式不返回任何值。

Java中的return语句总是和方法有密切关系,return语句总是用在方法中,有两个作用,
一个是返回方法指定类型的值(这个值总是确定的),一个是结束方法的执行(仅仅一个return语句)

这里要特别说明一下构造方法:
构造方法是一种特殊的方法,在构造方法中既不能定义返回值类型,也不能使用void定义构造函数没有返回值,
构造方法的主要作用是完成对象的初始化工作,它能够把定义对象时的参数传给对象的域。
所以构造方法中是没有return关键字的,构造方法的运行和处理都是java自己完成的,无需我们调用。

另外你也可以理解构造方法是有返回值的,它返回的是该类的实例,可以把这个实例当成返回值,
所以构造方法的返回值总是当前类,无需定义返回值类型
因此不能在构造方法中显式使用return来返回当前类的对象,因为构造方法的返回值是隐式的。

作者: 段金杰    时间: 2012-8-3 15:20
焦晨光 发表于 2012-8-3 09:54
是的 在java中所有的方法都有return关键字 包括void定义的方法、(构造方法下面解释)如果程序员没有在方法中 ...

很详细,谢谢
作者: 樊占江    时间: 2012-8-3 15:22
return 的作用是结束正在运行的函数,并返回函数值。
return后面可以跟一个常量,变量,或是表达式。

函数的定义一般是这样的,例如:
int a(int i)//第一个int是函数的返回值的类型,也就是return后面跟的值的类型,a是函数的名称,括号里的是传递给函数的参数,int是

参数的类型,i是参数的名字
{
...//省略函数体内容
return b;//b必须与函数头的返回值一致(此处为int型)
}
简单函数举例:
int addOne(int b)
{
  return b+1;
}
该函数的作用是取得一个数,将这个数加上1,再将结果返回
调用时这样:
int result= addOne(2);//此时result的值为3
函数括号里的参数也可以为变量或能算出值的表达式

以上就是一个基本的函数,一般的函数都有返回值,也就是return后面跟的值,返回值可以为各种数据类型,如:int,float,double,char

,a[](数组),*a(指针),结构或类(c++)

但不是所有函数都有返回值,如果某个函数无返回值,那么返回值的位置则为“void”关键字,此时函数体中无返回值,即无return的值。但

是函数中也可出现return,即一个空的return句子,其作用是使函数立即结束,如
void print()//括号中为空表示无传递参数
{
  printf("a");
  printf("b");
  return ;//函数执行到此处结束
  printf("c");
}//该函数只执行到return语句处,即屏幕上输出的为"ab"

return是个好东西
第一个作用,也就是他的真实作用
返回值,这个返回值是和函数的类型有关的,函数的类型是什么,他的返回值就是什么
比方主函数int main()
{}这里就必须有一个return,只有void时可以不用返回值。
功能函数
int fun()
{
return 1;
}
这个时候fun函数的作用就是返回一个int 类型的值,可以直接拿来用比方int a=fun();
这里就相当于int a=1;
另外一个作用return后面的语句不会执行,我们可以用它来结束程序
比方找出三个数种最大的一个数

void main
{
int a,b,c;
if(a>b)
  if(b>c)
      {
     return printf("最大值为%d",a);
   }
.....
}
在这里if(b>c)
我们就可以直接得出a是最大了,就没必要执行下面的语句了,return治理就起到了终止语句的作用了。





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2