注册 登录
编程论坛 JAVA论坛

关于编写函数里 return 的问题,本人菜鸟一枚

chenglong0 发布于 2017-10-28 17:14, 1915 次点击
public class Suzu
{
  public static void main(String[]args)
  {
    int[] suzu=new int[]{1,33,44,55,66,77};
    int y=hanSu(suzu);
   
  }
  public static int hanSu(int []suzu)
  {
     int y=suzu[0];
    for(int x=1;x<suzu.length;x++)
    {
      if(suzu[x]>y)
           y=suzu[x];
     }
      return y;
     
   }
  
}

问题1:在hanSu里 return y 的位置在 for 外,为什么可以返回y的值?for循环结束之后不是在内存中把变量释放了
吗?
问题2:读取数组中最值的时候,有必要建立新的函数吗?如上
3 回复
#2
kingpc5202017-10-29 14:05
可以return任何值
没必要
#3
流氓兔1号2017-11-04 20:26
也是新手,有不妥的地方还请谅解,回复如下:1.你的变量y是在函数体中定义的,所以并不是for循环以后y被释放,而是函数体执行完毕以后才被释放,所以可以返回y的值。
public class Suzu
{
  public static void main(String[]args)
  {
    int[] suzu=new int[]{1,33,44,55,66,77};
    int y=hanSu(suzu);
   
  }
  public static int hanSu(int []suzu)
  {
    int y=suzu[0];//y定义在for循环外
    for(int x=1;x<suzu.length;x++)
    {
      if(suzu[x]>y)
           y=suzu[x];
     }
      return y;
     
   }
  
}
2.不需要的
#4
林月儿2017-11-05 00:04
也是新手,
问题1:在hanSu里 return y 的位置在 for 外,为什么可以返回y的值?for循环结束之后不是在内存中把变量释放了
吗?
答:y和for循环体同层而不是在其内部,循环过程中y值可能被刷新。
但没有退出和异常的情况下,不会提前退出,也就有机会执行到返回y。

问题2:读取数组中最值的时候,有必要建立新的函数吗?如上
答:没必要,最值的获取,过程上可以在主方法内实现,方式上可以使用排序再取边界值。
方式的变更如果复杂类型的数组元素,可以定义比较规则。
1