在Java中,所谓的方法,本质上就是一段可以重复利用的代码片段,它能够根据需要被执行。
方法通常也被称作函数,这两个术语在实际使用中常常可以互换。
使用方法或函数的重要性
软件开发人员通常将复杂的问题拆解为多个较小的、易于解决的子问题,然后逐一攻破,以此来解决整个难题。这种思路催生了一种名为模块化的架构方式。在模块化架构中,开发人员会将代码分解成若干个可以独立移动和执行的代码片段,这些片段共同协作来解决更复杂的问题。
方法的优势在于它们可以在应用程序的不同部分被重复使用。试想一下,如果你需要编写一个工具方法来去除句子中所有多余的空格,那么每次需要使用这个功能时都重新编写一遍逻辑,这显然是不可取的。
相较而言,更有效率的做法是一次性创建一个方法,然后在应用程序的多个地方使用这个方法,仅仅传入不同的输入参数。很明显,后者更加高效便捷。
更进一步,借助Java中的访问修饰符,我们可以精细地控制哪些方法可以在应用程序中被共享,哪些不能。这有助于提高代码的可读性,使其更有组织性和结构性。
Java中的方法类型
在Java中,方法主要分为两大类:用户自定义方法和预定义方法。顾名思义,用户自定义方法是由程序员显式创建的。一个用户自定义方法的示例可以是:
public int sum(int a, int b) { return a + b; }
另一方面,预定义方法或内置方法,是Java编程语言本身已经提供的。内置方法的示例可以是:
String text = "Hello World"; text.toLowerCase();
在这个例子中,toLowerCase
就是一个内置的Java方法,可以在代码的任何位置被调用。
Java方法的结构
让我们来看一下Java中方法的标准结构:
[访问修饰符] [返回类型] 方法名称(...参数) { // 方法体 }
方法的这些组成部分必须按照固定的顺序进行定义。例如,不能在返回类型之前定义方法名,反之亦然。接下来,我们来详细了解一下构成方法的每个组成部分的作用以及它们是如何协同工作的。
#1. 访问修饰符
在Java中,访问修饰符是一些关键字,用于定义方法、类、接口、变量等的可见性。严格来说,Java中有四种访问修饰符:
public
:所有类都可以访问。private
:只能被它所属的类访问。default
(无修饰符): 默认访问修饰符,类似于protected
修饰符,该方法只能在同一包内访问。protected
:可以在子类或特定包中访问。
public int sum(int a, int b) { return a + b; }
在这里,sum
方法的访问修饰符是public
,因此它可以从任何地方被访问。
#2. 返回类型
函数的返回类型定义了函数执行完毕后返回的数据的数据类型。 如果函数不需要返回任何值,可以使用void
作为返回类型。当返回类型指定为void
时,则不能使用return
关键字。 为了定义一个函数,必须明确地指定返回类型。
public void log(String text) { System.out.println(text); }
上面的方法没有返回任何值,它只是将文本打印到控制台。 因此,它的返回类型是void
。
#3. 方法名称
方法名称用于标识类中的方法,并通过对象来调用该方法。
class Print { void log(String text) { System.out.println(text); } } Print p = new Print(); p.log("hello world"); // 输出 "hello world"
#4. 参数
您可以根据方法定义的参数将参数传递给方法。 例如,如果方法定义了两个参数,则只能传递两个对应数据类型的参数,并且必须按照参数定义的顺序传递。
class Calc { int sum(int a, int b) { return a + b; } } Calc cal = new Calc(); cal.sum(3, 7); // 返回 10
#5. 方法体
方法体包含了实现特定功能的代码逻辑,它负责执行方法应该完成的任务。方法体使用大括号括起来,通常也被称为代码块。
class Calc { int sum(int a, int b) { return a + b; } }
在这个例子中,大括号内的return
语句是sum
方法的方法体。
在Java中调用方法
在Java中,调用方法非常简单。您可以通过方法所属类的实例,根据方法名称来调用方法。
静态方法可以在没有其所属类的对象实例的情况下直接调用。 非静态方法必须严格从类的实例中调用,即从对象中调用。
对于静态方法,调用方式如下:
class Math { public static int sum(int a, int b) { return a + b; } } public class Main { public static void main(String[] args) { int add = Math.sum(5, 2); System.out.println(add); } }
在上面的代码中,Math
类中的sum
方法是一个静态方法。 这就是为什么您不需要创建Math
类的对象(实例),可以直接从类本身调用该方法。
另一方面,对于非静态方法,调用方式如下:
class Math { public int sum(int a, int b) { return a + b; } } public class Main { public static void main(String[] args) { int add = new Math().sum(5, 2); System.out.println(add); } }
在这里,您首先创建了一个Math
类的新对象,然后调用该对象的sum
方法。 其根本原因是,非静态方法在类被实例化之前是无法被调用的。
以上就是在Java中调用方法的几种方式。
总结
不仅在Java中,在任何编程语言中,方法都是组织代码并在多个位置重用它们的有效手段。方法是实现模块化和基于组件架构的重要基石。
如果您对Java编程充满热情,请继续深入学习关于Java异常处理等更高级的知识。