Redian新闻
>
如何在 Java 中使用方法 | Linux 中国

如何在 Java 中使用方法 | Linux 中国

科技
 
导读:在这个简便的教程中,我们可以了解到 Java 中方法的定义,如何使用方法,以及何时使用方法。     
本文字数:4540,阅读时长大约:6分钟

Java 中的方法(在许多其他编程语言中称为“函数”)是被组合在一起并标记为可重用的一块代码。方法很有用,因为它们允许你在不重写相同代码的情况下,执行相同的操作或一系列操作,这不仅意味着你的工作量减少,还意味着出现问题时需要维护和调试的代码减少。

方法存在于类中,因此标准 Java 样板代码适用:

  1. package com.opensource.example;
  2. public class Example {
  3. // 在此写代码
  4. }

在这样一个简单的单文件应用程序中,包定义并不是绝对必要的,但它是一个很好的习惯,而且大多数 IDE 都强制执行它。

默认情况下,Java 会寻找在类中运行的 main 方法。方法可以是公有的或私有的,也可以是静态的或非静态的,但 main 方法必须是公有的、静态的,Java 编译器才能识别和使用它。当方法是公有的时,它可以从类外部执行。要在程序启动时调用 Example 类,其 main 方法必须是可访问的,因此将其设置为 public

下面是两个方法的简单演示:一个 main 方法在调用 Example 类时默认执行,另一个 report 方法接受 main 的输入并执行简单操作。

为了模拟任意数据输入,我使用了 if-then 语句,该语句根据你启动应用程序的时间在两个字符串之间进行选择。换句话说,main 方法首先设置一些数据(在现实生活中,这些数据可以来自用户输入,也可以来自应用程序其他地方的其他方法),然后 “调用” report方法,将处理后的数据作为输入提供:

  1. package com.opensource.example;
  2. public class Example {
  3. public static void main(String[] args) {
  4. // 生成一些数据
  5. long myTime = System.currentTimeMillis();
  6. String weather;
  7. if ( myTime%2 == 0 ) {
  8. weather = "party";
  9. } else {
  10. weather = "apocalypse";
  11. }
  12. // 调用其他方法
  13. report(weather);
  14. }
  15. private static void report(String day) {
  16. System.out.printf("Welcome to the zombie %s\n", day);
  17. }
  18. }

运行代码:

  1. $ java ./Example.java
  2. Welcome to the zombie apocalypse
  3. $ java ./Example.java
  4. Welcome to the zombie party

请注意,同一 report 方法有两个不同的结果。当然,在这个简单的演示中,不需要第二种方法。模拟数据生成的 if-then 语句可能生成了相同的结果。但是,当一个方法执行一项复杂的任务时,比如将图像调整为缩略图,然后使用调整后的图像在屏幕上生成小部件,那么附加组件的“费用”就很有意义了。

何时使用 Java 方法

很难知道何时使用方法,何时只将数据发送到 Java 流🔗 opensource.com 或循环中。如果你面临这个决定,答案通常是使用一种方法。原因如下:

◈ 方法开销少。它们不会给代码增加处理开销。
◈ 方法减少代码的行数。
◈ 方法是特定的。查找名为 resizeImage 的方法通常比查找隐藏在从驱动器加载图像的函数中某个循环中的代码更容易。
◈ 方法是可重用的。当你第一次编写方法时,你可能会 认为 它只对应用程序中的一个任务有用。然而,随着应用程序的编写,你可能会发现自己正在使用一种你认为“已完成”的方法。

函数式编程与面向对象编程

函数式编程利用方法作为执行任务的主要构造。创建一个方法,该方法接受一种数据,处理该数据,并输出新数据。将许多方法串在一起,你就拥有了一个动态且功能强大的应用程序。像 C 和 Lua🔗 opensource.com 这样的编程语言就是这种编码风格的例子。

用代码完成任务的另一种方式是 Java 使用的面向对象模型。在面向对象编程中,方法是模板的组成部分。你可以创建对象,而不是将数据从一个方法发送到另一个方法,并可以通过使用它们的方法来更改它们。

从面向对象的角度来看,这是一个简单的 “僵尸末日” 演示程序。在函数方法中,我使用一种方法生成数据,另一种方法使用该数据执行操作。面向对象的等价物是具有表示工作单元的类。这个示例应用程序向用户显示一条当天的消息,宣布这一天会有僵尸派对或是僵尸末日。编写一个“天”对象,然后查询该对象以了解其特性是有意义的。作为演示面向对象构造的不同方面的借口,新的示例应用程序还将统计有多少僵尸出现在派对上(或末日)。

Java 为每个类使用一个文件,因此要创建的第一个文件是 Day.Java,它用作 Day 对象:

  1. package com.opensource.example;
  2. import java.util.Random;
  3. // 类
  4. public class Day {
  5. public static String weather;
  6. public int count;
  7. // 构造方法
  8. public Day() {
  9. long myTime = System.currentTimeMillis();
  10. if ( myTime%2 == 0 ) {
  11. weather = "paradise";
  12. } else {
  13. weather = "apocalypse";
  14. }
  15. }
  16. // 方法
  17. public String report() {
  18. return weather;
  19. }
  20. public int counter() {
  21. Random rand = new Random();
  22. count = count + rand.nextInt(100);
  23. return(count);
  24. }
  25. }

在“类”部分中,创建了两个域:天象 weather 和计数 countweather 是静态的。在一天的过程中(在这种假想的情况下),weather 不会改变。要么是派对 paradise,要么是末日 apocalypse,持续了一整天。然而,僵尸的数量在一天中会增加。

在“构造方法”部分,确定当天的天象。它是作为一个 构造方法🔗 opensource.com 完成的,因为它只在类最初被调用时发生一次。

在“方法”部分,report 方法只返回由构造方法确定和设置的天象报告。然而,counter 方法生成一个随机数,并将其添加到当前僵尸计数中。

换句话说,这个类做了三件不同的事情:

◈ 表示应用程序定义的“天”。
◈ 设置当天不变的天气报告。
◈ 设置一天中不断增加的僵尸数量。

要使用这所有,请创建第二个文件:

  1. package com.opensource.example;
  2. public class Example {
  3. public static void main(String[] args) {
  4. Day myDay = new Day();
  5. String foo = myDay.report();
  6. String bar = myDay.report();
  7. System.out.printf("Welcome to a zombie %s\n", foo);
  8. System.out.printf("Welcome to a zombie %s\n", bar);
  9. System.out.printf("There are %d zombies out today.\n", myDay.counter());
  10. System.out.printf("UPDATE: %d zombies. ", myDay.counter());
  11. System.out.printf("UPDATE: %d zombies. ", myDay.counter());
  12. }
  13. }

因为现在有两个文件,所以使用 Java IDE 运行代码是最简单的,但是如果不想使用 IDE,可以创建自己的 JAR 文件🔗 opensource.com。运行代码以查看结果:

  1. Welcome to a zombie apocalypse
  2. Welcome to a zombie apocalypse
  3. There are 35 zombies out today.
  4. UPDATE: 67 zombies. UPDATE: 149 zombies.

无论调用 report 方法多少次,weather 都保持不变,但调用 counter 方法的次数越多,僵尸的数量就会增加。

Java 方法

方法(或函数)是编程中的重要组成。在 Java 中,你可以将它们作为函数式编程的单个类的一部分使用,也可以在面向对象编程的类之间使用它们。两种类型的编程对于解决同一个问题有不同的视角,因此没有对与错之分。通过反复尝试,积累一点经验,你会知道哪一个最适合某个特定的问题。


via: https://opensource.com/article/23/1/java-methods

作者:Seth Kenlon 选题:lkxed 译者:ZhangZhanhaoxiang 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

LCTT 译者 :M81
🌟🌟
翻译: 3.0 篇
|
贡献: 5 天
2023-01-19
2023-01-24
https://linux.cn/lctt/ZhangZhanhaoxiang
欢迎遵照 CC-BY-SA 协议规定转载,
如需转载,请在文章下留言 “转载:公众号名称”,
我们将为您添加白名单,授权“转载文章时可以修改”。

微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
Linux 中的 su 和 sudo 命令有什么区别? | Linux 中国别浪费抗原了!抗原的正确使用方法在此如何在 Silverblue 上变基到 Fedora Linux 37 | Linux 中国Kali Linux 发布今年最后一个版本 | Linux 中国如何在 Ubuntu 和其他 Linux 下安装 IDLE Python IDE | Linux 中国如何在 Arch Linux 中安装 GNOME 桌面 | Linux 中国​你的洗碗布用错了!“这面”擦根本洗不干净 3M揭正确使用方法苹果布丁 苹果蛋糕Kuchen使用 PCManFM 文件管理器让你的 Linux PC 轻装上阵 | Linux 中国Linux 内核 6.1 发布,包含初始 Rust 支持 | Linux 中国火的箴言如何在 Linux 中找到一个进程 ID 并杀死它 | Linux 中国如何在 Linux 中更新 Flatpak 软件包 | Linux 中国在细颈瓶治下,好字都被404了如何在 Arch Linux 中安装 elementary OS 的 Pantheon 桌面 | Linux 中国在 Linux 中使用 “Converter” GUI 工具转换和操作图像 | Linux 中国Bodhi Linux 7.0.0 开始测试新的功能和软件包 | Linux 中国如何在 Arch Linux 中安装 OpenOffice(新手指南) | Linux 中国唯有攀岩,配得上你的智商如何在 Arch Linux 中安装 Cinnamon 桌面 | Linux 中国在 Linux 命令行上使用 dict 文字工具 | Linux 中国为什么你要在 Linux 上尝试 Nemo 文件管理器? | Linux 中国Gnoppix Linux 22.12 发布 | Linux 中国天赋“易昺(bǐng)”,创造历史!如何在 Linux 中使用旧相机作为网络摄像头 | Linux 中国最佳 Linux 远程桌面客户端 | Linux 中国西南联大学教授1938年的薪水单如何在 Linux 中使用 SCP 安全地传输文件 | Linux 中国如何在 Linux 系统中访问 UEFI 设置 | Linux 中国如何在 Linux 中降级 Flatpak 软件包 | Linux 中国5 个 htop 替代:增强你的 Linux 系统监控体验 | Linux 中国你现在可以在 Arch Linux 上安装 Unity 7.6 桌面了 | Linux 中国如何在 Arch Linux 中安装 MATE 桌面 | Linux 中国世界上只有两个 Linux 发行版:Arch Linux 与其它 | Linux 中国在 C 语言中使用 getopt 解析命令行短选项 | Linux 中国
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。