一、return声明

认为您已经完全了解了 Java 方法?无论您认为自己知道什么,您仍然不知道其中的一半。

让我们从简单的事情开始。例如,Java 有一个return语句,可以让您立即终止调用它的方法。这是声明:

return;

很简单:单独的单词return后跟分号。程序一执行这条语句,当前方法立即退出,继续调用。

如果在方法return中被调用main,那么main方法将立即结束,整个程序也随之结束。

例子:

class Solution
{
   public static void fill(int[] data, int from, int to, int value)
   {


     if (from < 0 || to > data.length)
       return;

     for (int i = from; i < to; i++)
     {
       data[i] = value;
     }
   }

   public static void main(String[] args)
   {
     int[] months = {1, 2, 3, 4, 5, 6, 7, 8 ,9, 10, 11, 12};
     fill(months, 2, 10, 8);
   }
}


fill 方法用 填充传递的数组的一部分value
数组中要填充的部分由索引from 和定义to
如果from 小于0to 大于数组的长度,则该方法立即终止。

上面的程序有一个fill方法,用 填充传递给它的数组valuefrom它不会填充整个数组,仅填充由索引和指定的部分to

在该方法的开头fill ,检查传递的值以确保它们有效。如果from小于 0,或者如果to 大于数组的长度,则该fill方法立即终止(执行一条return语句)。

return句话很有用:实际上 Java 中的每个方法都有一个,这就是原因。



2. 有结果的方法,void

请记住,我们曾经发现有语句,也有表达式。与语句不同,表达式具有可以在某处使用的值。

而且,在 Java 中,方法可以有一个。这是一个非常好的消息:方法不仅能够根据输入参数做一些事情,而且,例如,评估一些事情并返回计算结果

顺便说一句,你已经遇到过这样的方法:

double delta = Math.abs(d1 - d2);
abs()方法返回一个双
Scanner console = new Scanner(System.in);
int x = console.nextInt();

nextInt()方法返回一个int
String str = "Hello";
String s2 = str.toUpperCase();

toUpperCase()方法返回一个String
int[] data = {1, 4, 5, 6, 7, 8, 11};
int[] array = Arrays.copyOf(data, 4);

copyOf()方法返回一个int[]

每个方法只能返回一种预定类型的一个值。返回类型在声明方法时确定:

public static Type name(parameters)
{
  method body
}

其中name 是方法名,parameters 是方法参数列表,type 是方法返回结果的类型。

对于什么都不返回的方法,有一个特殊的占位符类型:void

您是否正在编写自己的方法并且不想向调用方法返回任何内容?只需将方法的类型声明为void,问题就解决了。Java中也有很多这样的方法。


3.返回结果

我们刚刚想出了如何声明一个返回计算结果的方法,但是我们如何在方法本身中产生这个结果呢?

return声明再次帮助我们解决了这个问题。从方法传递结果如下所示:

return value;

Wherereturn是立即终止方法的语句。Andvalue 是方法退出时返回给调用方法的值。的类型value必须与type方法声明中指定的相匹配。

示例 1. 该方法计算两个数中的最小值:

int min(int a, int b)
{
   if (a < b)
     return a;
   else
     return b;
}
该方法返回两个数字中的最小值。

如果a < b
返回a
否则
返回b

示例 2. 该方法复制传递给它的字符串n时间:

String multiple(String str, int times)
{
   String result = "";
   for (int i = 0; i < times; i++)
     result = result + " "+ str;
   return result;
}
该方法有两个参数——一个字符串和该字符串应重复的次数。
为将来的结果创建一个空字符串。

在具有迭代的循环中times,将空格和str字符串添加到result字符串中。

该字符串result作为该方法的结果返回。

示例 3:该方法使用三元运算符计算两个数字的最大值:

int max(int a, int b)
{
   return (a > b ? a : b);
}
该方法返回两个数字中的最大值。

返回(如果a > b,则a,否则b