Java中的方法(在许多其他编程语言中称为“函数”)是一段代码,它们组合在一起并标记为可重用性。方法之所以有用,是因为它们允许您执行相同的操作或操作序列而无需重写相同的代码,这不仅意味着您的工作量更少,而且在出现问题时需要维护和调试的代码也更少。方法存在于类中,因此适用标准Java样板代码:packagecom.opensource.example;publicclassExample{//writecodehere}在这样一个简单的单文件应用程序中,包定义不是绝对必要的,但这是一个好习惯,大多数IDE都强制执行它。默认情况下,Java会寻找一个main方法在类中运行。方法可以是公共的或私有的,静态的或非静态的,但main方法必须是公共的和静态的,Java编译器才能识别和使用它。当方法是公共的时,它可以从类外部执行。要在程序启动时调用Example类,它的main方法必须是可访问的,因此将其公开。下面是两个方法的简单演示:一个是调用Example类时默认执行的main方法,一个是接受main的输入并进行简单操作的report方法。为了模拟任意数据输入,我使用了一个if--then语句,该语句根据您启动应用程序的时间在两个字符串之间进行选择。换句话说,主要方法首先设置一些数据(在现实生活中,这些数据可能来自用户输入,或者来自应用程序其他地方的其他方法),然后“调用”报告方法,提供处理后的数据作为输入:packagecom.opensource.example;publicclassExample{publicstaticvoidmain(String[]args){//生成一些数据longmyTime=System.currentTimeMillis();字符串天气;如果(myTime%2==0){天气="派对";}else{天气=“启示录”;}//调用其他方法report(weather);}privatestaticvoidreport(Stringday){System.out.printf("Welcometothezombie%s\n",day);}}运行代码:$java./Example.javaWelcometothezombieapocalypse$java./Example.javaWelcometothezombieparty请注意,同一个报告方法有两个不同的结果。当然,在这个简单的demo中,不需要第二种方法。模拟数据生成的if-then语句可能会产生相同的结果。然而,当一个方法执行复杂的任务时,例如将图像调整为缩略图,然后使用调整后的图像在屏幕上生成一个小部件,那么附加组件的“费用”就很有意义了。何时使用Java方法很难知道何时使用方法以及何时将数据发送到Java流或循环中。如果您面临这个决定,答案通常是使用一种方法。原因如下:方法开销很低。它们不会给代码增加处理开销。减少代码行数的方法。方法是具体的。找到一个名为resizeImage的方法通常比在从驱动器加载图像的函数中的某处找到隐藏在循环中的代码更容易。方法是可重用的。第一次编写方法时,您可能认为它只对应用程序中的一个任务有用。但是,在编写应用程序时,您可能会发现自己使用了一种您认为已经“完成”的方法。函数式编程与面向对象编程函数式编程使用方法作为执行任务的主要结构。创建一种方法,该方法采用一种类型的数据、处理该数据并输出新数据。将许多方法组合在一起,您就拥有了一个动态且功能强大的应用程序。像C和Lua这样的编程语言就是这种编码风格的例子。在代码中完成任务的另一种方法是Java使用的面向对象模型。在面向对象编程中,方法是模板的构建块。您可以创建对象并使用它们的方法更改它们,而不是将数据从一种方法发送到另一种方法。从面向对象的角度来看,这是一个简单的“僵尸末日”演示。在函数方法中,我使用一种方法生成数据,另一种方法对该数据执行操作。面向对象的等价物是拥有代表工作单元的类。此示例应用程序向用户显示当天的消息,宣布将有僵尸派对或僵尸启示录。编写一个“day”对象,然后查询该对象的属性是有意义的。作为展示面向对象构造的不同方面的借口,新的示例应用程序还将计算在聚会(或世界末日)中出现了多少僵尸。Java每个类使用一个文件,因此要创建的第一个文件是Day.Java,用作Day对象:packagecom.opensource.example;importjava.util.Random;//classpublicclassDay{publicstaticStringweather;publicintcount;//构造方法publicDay(){longmyTime=System.currentTimeMillis();如果(myTime%2==0){天气="天堂";}else{天气=“启示录”;}}//方法publicStringreport(){returnweather;}publicintcounter(){Randomrand=newRandom();count=count+rand.nextInt(100);返回(计数);}}在“Class”部分,创建了两个字段:weatherweather和countcount。天气是静态的。在一天的过程中(在这个假设的情况下),天气不会改变。要么是派对天堂,要么是持续一整天的世界末日。然而,僵尸的数量整天都在增加。在“施工方法”部分,确定当天的天空条件。它作为构造函数完成,因为它只在类最初被调用时发生一次。在“方法”部分,report方法仅返回由构造函数确定和设置的天文报告。但是,counter方法会生成一个随机数并将其添加到当前的僵尸计数中。换句话说,这个类做了三件不同的事情:表示一个应用程序定义的“天”。设置当天的持续天气预报。设置全天增加的僵尸数量。要使用所有这些,请创建第二个文件:packagecom.opensource.example;公共类示例{publicstaticvoidmain(String[]args){DaymyDay=newDay();Stringfoo=myDay.report();字符串bar=myDay.report();System.out.printf("欢迎来到僵尸%s\n",foo);System.out.printf("欢迎来到僵尸%s\n",bar);System.out.printf("今天有%d个僵尸。\n",myDay.counter());System.out.printf("更新:%d僵尸。",myDay.counter());系统。out.printf("更新:%d僵尸。",myDay.counter());}}由于现在有两个文件,使用JavaIDE运行代码最简单,但如果您不想使用IDE,您可以创建自己的JAR文件。运行代码查看结果:WelcometoazombieapocalypseWelcometoazombieapocalypse今天有35只僵尸。更新:67个僵尸。更新:149个僵尸。不管调用report方法多少次,天气都是不变的,但是counter方法调用的次数越多,僵尸的数量就会增加。Java方法方法(或函数)是编程的重要组成部分。在Java中,您可以将它们用作函数式编程中单个类的一部分,或面向对象编程中类之间的一部分。两种编程方式在解决同一个问题上有着不同的角度,因此没有对错之分。通过反复试验并积累一点经验,您将了解哪一个最适合特定问题。
