JavaRush /Java 博客 /Random-ZH /Java 中的方法
articles
第 15 级

Java 中的方法

已在 Random-ZH 群组中发布
Java 中的方法 - 1在 Java 中,应用程序由类组成。类又由变量组成。它们负责存储对类的行为负责的数据和方法:换句话说,它可以提供的逻辑(例如,处理一些数据、调用其他方法等)。我们可以将这些组件作为变量讨论很长时间,但这不是我们今天聚集在一起的原因。我们最好把类的这样一个组件作为方法来讨论。 Java 中的方法 - 2方法是在类中声明的命名代码块。它包含旨在解决可重复使用的单独问题的特定完整操作序列(指令)。换句话说,方法就是函数:您的类可以执行的操作。其他语言也有函数。仅在 Java 中,它们是类的成员,并且根据 OOP 术语,称为方法。但在继续之前,让我们看一个小例子:
public String constructHelloSentence(String name) {
  String resultSentence = "Hello world! My name is " + name;
  System.out.println(resultSentence);
  return resultSentence;
}
这里没有什么复杂的:一个 Java 方法,其任务是生成一个带有我们传递给它的名称的问候字符串。例如 -Hello world! My name is Bobby 让我们通过查看方法声明中的每个关键字(从左到右)来正确理解方法的构造。我们的第一个关键字是public,它表示访问修饰符:

访问修饰符

它们指示类成员允许的可见范围,即允许使用变量或方法的位置的限制。 Java 中的方法 - 3Java 中使用以下访问修饰符:
  • 公共:公共。带有此修饰符的方法或字段是公共的,对当前包和外部包中的其他类(或者更确切地说,它们的方法和字段)可见。这是已知的最广泛的访问级别;

  • protected:带有此修饰符的方法或变量可以从当前类或包中的任何位置访问,或者在继承该修饰符的类中,以及方法或字段中访问,即使它们位于其他包中

    protected String constructHelloSentence(String name) {...}
  • 默认修饰符。如果类字段或方法没有修饰符,则应用默认修饰符。在这种情况下,字段或方法对当前包中的所有类都可见(如protected,但在继承时不可见)。

    String constructHelloSentence(String name) {...}
  • private :与public修饰符相反。具有此类修饰符的方法或变量仅在声明它的类中可用。

    private String constructHelloSentence(String name) {...}
接下来是String方法签名(方法的第一行描述其属性)。

返回值

返回值是调用后出现在其位置的数据(方法执行的某些结果)。每个方法都有一个返回值。或不?

返回值方法

该值可以是任何类型的数据:简单类型的变量或引用类型。在此示例中,我们指示该方法必须返回类型为 的对象String,正如我们所记得的,它是一个描述字符串的类。这里的第二点是这个词return。它与返回值有直接关系:它后面的值将被发送回调用该方法的地方,然后该方法本身将return关闭。这个词通常出现在方法的最后一行(除了具有各种分支的方法,如if, else...)。如果您将代码写在下面的下一行return
private String constructHelloSentence(String name) {
  String resultSentence = "Hello world! My name is " + name;
  return resultSentence;
  System.out.println(resultSentence);
}
然后我们会从编译器得到curses,这不太好(编译器不会推荐废话)。您还需要记住,后面的数据类型с必须与方法签名中声明的数据类型匹配。return阅读更多有关此处的信息。

空白

它在Java中有何用途void?并非所有方法都有返回值。有些人要么什么都没有,要么不需要归还任何东西。那该怎么办呢?然后在方法签名中我们写入void. 如果没有返回值,我们的方法会是什么样子?
protected void constructHelloSentence(String name) {
  String resultSentence = "Hello world! My name is " + name;
  System.out.println(resultSentence);
}
您可能注意到,随着返回值,return“So it is”一词也消失了,因为我们的方法不应该返回任何内容。不过,可以放在这里,但没有任何意义,只是return;在最后一行。这通常是无用的,因此void在方法中它是可选的。但是,它可以在您想要立即退出方法的方法中很有用void,例如分支或循环。接下来在方法声明中我们有constructHelloSentence

方法名称

constructHelloSentence - 方法的名称,这是我们可以区分一种或另一种方法的显着特征。并且相应地调用一种或另一种方法。 Java 中的方法 - 4方法名必须以小写字母开头,同时也使用驼峰式大小写(CamelCase,驼峰式大小写):即 名称中的每个下一个单词都与前一个单词相邻,并且用大写字母书写。方法名称应该描述该方法(最好的注释是正确的命名)。为此,请使用动词或动词组合:getCatdeletecreateCar等。在一个类中,方法名称必须是唯一的(不包括方法重载,我们稍后会讨论)。让我们进一步看看我们正在分析的方法,看看 ( String name)

方法参数

方法可能(也可能没有)具有来自外部的某些数据,即来自调用该方法的位置的数据。在我们的例子中,我们看到一个String带有名称的类型对象到达name,稍后我们在我们的方法中使用这个变量。您可以在方法中使用无限数量的参数,但不建议超过 7 个。当我们不知道元素的确切数量,但所有这些元素都出于相同目的并且具有相同类型(例如,String)时,将使用省略号:
public void constructHelloSentence(String...name) {
 ...
}
每个元素的吸引力是这样的:name[0] 它让你想起什么了吗?没错,就是数组!如果我们这样写,什么都不会改变:
protected void constructHelloSentence(String[] name) {
 ...
}
对元素的访问也将采用以下形式:name[1] 还有一件事。方法参数可以是最终的
public String constructHelloSentence(final String name) {
  ...
}
这意味着名称引用绑定到特定对象String并且不能被覆盖。final您可以在材料“ Java 中的引用数据类型”中了解有关使用引用变量及其与保留字的交互的信息。

调用方法

那么,我们已经整理好了方法的创建,现在我们来说说使用方法。Java中如何调用方法? Java 中的方法 - 5Java 中的每个方法都在一个类中。为了理解 Java 中调用方法的工作原理,我们来看一个类:
public class StringConstructor {
  public String constructHelloSentence(String name) {
     String resultSentence = "Hello world! My name is " + name;
     System.out.println(resultSentence);
     return resultSentence;
  }
}
由于我们的方法不是静态的(这是一个单独的讨论主题,超出了今天文章的范围),因此要调用它,您必须首先创建一个对象,然后调用它的方法:
class Application{
  public static void main(String[] args) {
     StringConstructor stringConstructor = new StringConstructor();
     stringConstructor.constructHelloSentence("Den");
  }
}
在我们方法的参数中,我们传递了我们想要在屏幕上显示的结果字符串中看到的字符串(名称):

Hello world! My name is Den
还值得记住的是,方法可以根据需要多次重用 - 没有任何限制。

您经常可以在代码中看到关键字this,如 setter 中:
public void setValue(Long value) {
   this.value = value;
}
这意味着什么? this在Java中,this是对该类的当前对象的引用。例如,如果我们创建一个对象:
StringConstructor stringConstructor = new StringConstructor();
那么this该对象内部stringConstructor将有一个指向同一对象的链接。 this既用于引用对象变量(如上面的 setter 中)又用于调用某些方法。我们可以稍微重写一下我们的类:
public class StringConstructor {

  public String constructHelloSentence(String name) {
     String resultSentence = this.getSentence()  + name;
     System.out.println(resultSentence);
     return resultSentence;
  }

  private String getSentence() {
     return "Hello world! My name is ";
  }
}
通过this我们调用这个对象的方法来获取所需的字符串。但通常来说,这几乎不用于方法,因为即使没有它,也存在对给定对象的方法的引用;它主要用于对象变量。

方法重载

假设我们需要一个执行基本相同逻辑的方法,但在Hello world! 相反,world我们想插入我们自己的单词(字符串)。但我们已经有方法了constructHelloSentence。那么,我们是否需要为本质上执行相同功能的方法起一个新名称?不管怎样:此时方法重载就派上用场了。 Java 中的方法 - 7方法重载是在类中声明同一方法名称时多次使用该方法。从语言语法的角度来看,在某个局部空间中不可能有两个相同的名称。但也可以声明具有相同名称但不同参数的方法。换句话说,当存在两个或多个名称相同但输入数据不同的方法时,类包含重载:
public class Constructor {

  public String constructHelloSentence(String name) {
     String resultSentence = "Hello world! My name is " + name;
     System.out.println(resultSentence);
     return resultSentence;
  }

  protected String constructHelloSentence(String firstName, String secondName) {
     String resultSentence = "Hello " + firstName + "! My name is " + secondName;
     System.out.println(resultSentence);
     return resultSentence;
  }
}
在这里我们看到方法不必包含相同的访问修饰符(以及返回类型)。如果调用重载方法,则编译器会根据调用期间指定的参数从多个声明的方法中自动确定所需的方法。
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION