,Java 中的方法(在许多其他编程语言中称为“函数”)是被组合在一起并标记为可重用的一块代码。方法很有用,因为它们允许你在不重写相同代码的情况下,执行相同的操作或一系列操作,这不仅意味着你的工作量减少,还意味着出现问题时需要维护和调试的代码减少。,方法存在于类中,因此标准 Java 样板代码适用:,在这样一个简单的单文件应用程序中,包定义并不是绝对必要的,但它是一个很好的习惯,而且大多数 IDE 都强制执行它。,默认情况下,Java 会寻找在类中运行的 main
方法。方法可以是公有的或私有的,也可以是静态的或非静态的,但 main
方法必须是公有的、静态的,Java 编译器才能识别和使用它。当方法是公有的时,它可以从类外部执行。要在程序启动时调用 Example
类,其 main
方法必须是可访问的,因此将其设置为 public
。,下面是两个方法的简单演示:一个 main
方法在调用 Example
类时默认执行,另一个 report
方法接受 main
的输入并执行简单操作。,为了模拟任意数据输入,我使用了 if
-then
语句,该语句根据你启动应用程序的时间在两个字符串之间进行选择。换句话说,main
方法首先设置一些数据(在现实生活中,这些数据可以来自用户输入,也可以来自应用程序其他地方的其他方法),然后 “调用” report
方法,将处理后的数据作为输入提供:,运行代码:,请注意,同一 report
方法有两个不同的结果。当然,在这个简单的演示中,不需要第二种方法。模拟数据生成的 if
-then
语句可能生成了相同的结果。但是,当一个方法执行一项复杂的任务时,比如将图像调整为缩略图,然后使用调整后的图像在屏幕上生成小部件,那么附加组件的“费用”就很有意义了。,很难知道何时使用方法,何时只将数据发送到 Java 流 或循环中。如果你面临这个决定,答案通常是使用一种方法。原因如下:,函数式编程利用方法作为执行任务的主要构造。创建一个方法,该方法接受一种数据,处理该数据,并输出新数据。将许多方法串在一起,你就拥有了一个动态且功能强大的应用程序。像 C 和 Lua 这样的编程语言就是这种编码风格的例子。,用代码完成任务的另一种方式是 Java 使用的面向对象模型。在面向对象编程中,方法是模板的组成部分。你可以创建对象,而不是将数据从一个方法发送到另一个方法,并可以通过使用它们的方法来更改它们。,从面向对象的角度来看,这是一个简单的 “僵尸末日” 演示程序。在函数方法中,我使用一种方法生成数据,另一种方法使用该数据执行操作。面向对象的等价物是具有表示工作单元的类。这个示例应用程序向用户显示一条当天的消息,宣布这一天会有僵尸派对或是僵尸末日。编写一个“天”对象,然后查询该对象以了解其特性是有意义的。作为演示面向对象构造的不同方面的借口,新的示例应用程序还将统计有多少僵尸出现在派对上(或末日)。,Java 为每个类使用一个文件,因此要创建的第一个文件是 Day.Java
,它用作 Day
对象:,在“类”部分中,创建了两个域:天象 weather
和计数 count
。weather
是静态的。在一天的过程中(在这种假想的情况下),weather
不会改变。要么是派对 paradise
,要么是末日 apocalypse
,持续了一整天。然而,僵尸的数量在一天中会增加。,在“构造方法”部分,确定当天的天象。它是作为一个 构造方法 完成的,因为它只在类最初被调用时发生一次。,在“方法”部分,report
方法只返回由构造方法确定和设置的天象报告。然而,counter
方法生成一个随机数,并将其添加到当前僵尸计数中。,换句话说,这个类做了三件不同的事情:,要使用这所有,请创建第二个文件:,因为现在有两个文件,所以使用 Java IDE 运行代码是最简单的,但是如果不想使用 IDE,可以创建自己的 JAR 文件。运行代码以查看结果:,无论调用 report
方法多少次,weather
都保持不变,但调用 counter
方法的次数越多,僵尸的数量就会增加。,方法(或函数)是编程中的重要组成。在 Java 中,你可以将它们作为函数式编程的单个类的一部分使用,也可以在面向对象编程的类之间使用它们。两种类型的编程对于解决同一个问题有不同的视角,因此没有对与错之分。通过反复尝试,积累一点经验,你会知道哪一个最适合某个特定的问题。
© 版权声明
文章版权归作者所有,未经允许请勿转载。