作为 Codegym 大学课程一部分的导师授课片段。报名参加完整课程。


“阿米戈,你已经来了吗?我知道你已经学会了很多Java命令,你已经快到我的水平了!”

“是真的吗,迭戈?”

“当然不是,哈哈。你还有很多学习和学习要做。不过,你已经知道足够编写相当复杂的程序了。一个程序中的10、20、30行代码不是很大的程序,正确的?”

“我想你是对的。特别是如果你把大括号放在不同的行上。”

“但是一个 100 多行的程序,现在已经很大了。即使是我们机器人也很难理解这样的代码。你觉得呢,你能做些什么来以某种方式简化编写和阅读包含大量代码的程序吗?

“我真心希望如此!”

“你的希望没有白费。简化程序是可能的,这里有方法来帮助我们。它们有时被称为函数

“函数,方法……呃,是什么?”

“简单地说,一个方法就是一组具有唯一名称的命令。换句话说,我们只是将几个命令放入一个组中并为其指定一个唯一的名称。就是这样 - 砰 - 我们有一个方法。大多数通常,这些命令根据一些基本原理进行分组,以解决一个小而具体的任务。例如,“一种从文件中打印行的方法”。或者“一种将数字增加到指数的方法”。

“所以,我们把程序拆分成方法?”

“是的,它简化了代码。

例子:

没有方法 用一个方法
class Solution
{
   public static void main(String[] args)
   {
     System.out.print("Wi-");
     System.out.println("Fi");
     System.out.print("Wi-");
     System.out.println("Fi");

     System.out.print("Wi-");
     System.out.println("Fi");
   }
}
class Solution
{
   public static void main(String[] args)
   {
     printWiFi();
     printWiFi();
     printWiFi();
   }
   public static void printWiFi()
   {
     System.out.print("Wi-");
     System.out.println("Fi");
   }
}

“在左列的程序中,我们将相同的代码重复三次——我们故意这样做是为了说明一点。但在右列的程序中,我们将重复的代码移到了一个单独的方法中,并给它起了一个唯一的名字—— printWiFi.

而不是重新定位的代码,我们调用该printWiFi()方法 3 次。

“右边一栏的程序运行时,每次printWiFi()执行方法时,printWiFi()都会执行方法内部的所有命令。我们只是创建了一个新的命令(方法),将几个命令组合成一个组。

“任何代码都可以拆分成单独的方法。这样做是为了简化事情:想法是拥有许多小方法比一个大方法更好。

“将程序拆分为方法是个好主意。

“很快你就会惊奇地回忆起你过去是如何在不制定自己的方法的情况下编写程序的。”

“我准备好倾听并尝试编写方法!告诉我如何去做。”

在 Java 中声明一个方法

“我们如何声明最简单的方法?方法如下:

public static void name()
{
  method body
}

其中name是方法的唯一名称,method body代表组成该方法的命令。publicstatic和的含义void将在后面讨论。

“创建方法后,我们可以在其他方法中调用它。方法调用如下所示:

name();

name我们要调用的方法的唯一名称在哪里,即当我们到达方法调用时,我们要执行其命令的方法。

“当程序到达方法调用处时,它会简单地进入方法,执行它的所有命令,返回到原来的方法,并继续执行。

“现在,阿米戈,用新的眼光审视你已经学过的命令。例如,。关于这到底是什么,你有什么想法吗?”System.out.println()

“你是说这些命令都是其他程序员写的方法?”

“不是全部,但是很多。是的,完全正确!其他人写它们是为了让我们的生活更轻松。”

public static void main(String[] args)也是一种方法……现在更有意义了!”

“当然,它确实如此!这是编程!事实证明,主要方法——程序的 alpha 和 omega——可以包含对其他方法的调用:

代码 笔记
class Solution
{
   public static void main(String[] args)
   {
     printWiFi10Times();
   }

   public static void printWiFi10Times()
   {
     for (int i = 0; i < 10; i++)
       printWiFi();
   }

   public static void printWiFi()
   {
     System.out.print("Wi-");
     System.out.println("Fi");
   }
}




我们调用print10TimesWiFi()方法


我们声明print10TimesWiFi方法我们 在循环中


调用方法 10 我们声明方法 我们在屏幕上显示“ ”printWiFi()


printWiFi

Wi-Fi

关于方法的事实

“我已经为你保留了一些关于方法的有用事实。在这里,享受:

事实 1.方法始终是类的一部分。

方法只能在类中声明。一个方法不能在另一个方法中声明。方法不能在类外声明。

事实 2.方法名没有神圣意义

调用什么方法并不重要——这不会影响任何事情。main 方法与所有其他方法一样。只是为 Java 机器将开始执行程序的方法选择了这个名称。这没什么神奇的。综上所述,最好选择至少能清楚说明其用途的方法名称。稍后我会谈到这个。

事实 3.类中方法的顺序无关紧要

您可以按任何顺序在类中编写方法——这不会以任何方式影响程序的执行。例子:

代码
class Solution
{
   public static void printWiFi10Times()
   {
     for (int i = 0; i < 10; i++)
       printWiFi();
   }
   
   public static void main(String[] args)
   {
     printWiFi10Times();
   }

   public static void printWiFi()
   {
     System.out.print("Wi-");
     System.out.println("Fi");
   }
}
class Solution
{
   public static void printWiFi()
   {
     System.out.print("Wi-");
     System.out.println("Fi");
   }

   public static void printWiFi10Times()
   {
     for (int i = 0; i < 10; i++)
       printWiFi();
   }
   public static void main(String[] args)
   {
     printWiFi10Times();
   }
}

事实 4.一个方法中的变量与其他方法中的变量没有任何关系

在维加斯发生的事情,留在维加斯。并且在方法内声明的变量保留在方法内。

可以在两个相邻的方法中声明同名变量,并且这些变量之间没有任何关系。

方法名称

“所以……我答应过给你讲方法名的,早就知道编程中最难的两个问题,一个是方法名,一个是变量名。”

“没想到这么难!”

“你只是不太了解其他人的模糊代码,其中变量和方法具有任意名称。只需尝试找出该代码即可。事实上,关于如何正确命名方法几乎已经出现了一门完整的科学。并且每种编程语言都有自己的标准。

“在 Java 中,习惯上遵循这些原则:

原则 1.方法名应简要描述该方法的作用。

然后另一个阅读你的代码的程序员可以根据方法的名称来猜测代码的作用。他或她不需要每次都查看被调用方法的代码。而且这些方法的目的更容易记住。

例如,用于“让程序进入休眠状态”并用于“读取下一个整数”。方便吧?Thread.sleep()Scanner.nextInt()

原则2.一个方法名可以是多个单词。

但是,这样做有几个限制:

  • 方法名称中不能有空格:所有单词都写在一起。
  • 每个单词都大写,除了第一个。
  • 方法名总是以小写字母开头

记住print10TimesWiFi方法。这个名字是什么意思?“显示‘WiFi’一词 10 次”。你不应该在方法的名字中包含很多单词:名字应该反映它的本质。

这种命名方法的标准称为 CamelCase(大写字母就像骆驼的驼峰)。

原则 3.方法名以动词开头。

一个方法总是做一些事情,所以方法名中的第一个词总是一个动作。

以下是一些错误的方法名称:home, cat, car, train, ...;

一些好的名字是:run, execute, print, read, write, ...

原则 4.方法名只能使用拉丁字母和数字。

Java 对不同的语言都有很好的支持。您可以用俄语和中文编写变量、方法和类的名称——一切都可以!

但!System.out.println()想象一下,如果方法是用中文写的,你要学多久 Java ?

比现在长得多,对吧?这是第一点。

其次,许多软件开发团队是国际化的。全世界的程序员都在使用大量的 Java 库。

因此,建议在方法名称中仅使用拉丁字母和数字。

重要的:

方法名必须以字母开头(不能以数字开头)。

“这些都是管理 Java 中方法命名的基本原则。课程现在结束了。去解决任务吧!”

“我已经在跑了,迭戈!”


作为 Codegym 大学课程一部分的导师授课片段。报名参加完整课程。