通常情况下,方法是执行特定任务的一组指令。同样地,Java中的方法是一组指令的集合,用于执行特定的任务。它们提供了代码的可重用性,并使我们能够轻松地修改代码。在本节中,我们将学习Java中的方法是什么,方法的类型,方法声明以及如何调用方法。

什么是Java中的方法?

方法是一组代码块或语句的集合,用于执行特定的任务或操作。它们用于实现代码的可重用性,我们只需编写一次方法,然后可以多次调用它。这样我们就不需要重复编写相同的代码。方法的调用只在我们显式地调用它时才会执行。

方法声明

方法声明提供了有关方法属性的信息,包括可见性、返回类型、方法名和参数。它由六个组成部分组成,称为方法头,如下所示:

1.png

在Java中,方法签名是指方法的名称和参数列表。它提供了对方法的基本信息。

访问修饰符是方法的访问类型,指定了方法的可见性。Java提供了四种访问修饰符:

  • public:当使用public修饰符时,该方法对所有类可见。
  • private:当使用private修饰符时,该方法只能在定义它的类中访问。
  • protected:当使用protected修饰符时,该方法可以在同一包中或不同包的子类中访问。
  • 默认(default):当方法声明中没有使用任何访问修饰符时,默认使用默认访问修饰符。它在同一包中可见。

返回类型是方法返回的数据类型。它可以是原始数据类型、对象、集合或void。如果方法不返回任何内容,则使用void关键字。

方法名称是方法的唯一标识符,用于定义方法的名称。它应该与方法的功能相对应。例如,如果我们创建了一个用于两个数字相减的方法,方法名称应为subtraction()。方法通过其名称进行调用。

参数列表是由逗号分隔的参数类型和变量名组成的列表,括在一对括号中。它定义了方法接受的参数。如果方法没有参数,括号为空。

方法体是方法声明的一部分,包含要执行的所有操作,它由一对大括号括起来。

方法命名

在定义方法时,方法名称应为动词,并以小写字母开头。如果方法名称由多个单词组成,第一个单词应为动词,后面可以跟着形容词或名词。在多个单词的方法名称中,除了第一个单词外,每个单词的首字母应大写。例如:

  • 单词方法名称:sum()、area()
  • 多词方法名称:areaOfCircle()、stringComparison()

在同一个类中,方法名可以与另一个方法同名,这称为方法重载。

方法类型

Java中有两种类型的方法:

  • 预定义方法(Predefined methods)
  • 用户自定义方法(User-defined methods)

预定义方法

预定义方法是已经在Java类库中定义的方法,也被称为标准库方法或内置方法。我们可以随时在程序中调用这些方法来直接使用它们。预定义方法提供了一些常见的功能,例如字符串处理、数学计算等。我们可以通过调用预定义方法来执行这些功能,而无需编写自己的代码。

预定义方法通常属于特定的类,例如Math类中的max()方法,用于返回两个数字中较大的值。使用预定义方法时,我们只需调用方法并传递所需的参数,它们会在后台执行与方法相关的代码。

让我们看一个使用预定义方法的示例:

Demo.java

public class Demo   
{  
public static void main(String[] args)   
{  
// 使用 Math 类的 max() 方法
System.out.print("最大数量为:" + Math.max(9,7));  
}  
}  

输出:

最大数量为:9

在上面的示例中,我们使用了三个预定义方法main()、print()max()。我们没有声明就直接使用了这些方法,因为它们是预定义的。print() 方法是PrintStream类的一种方法,可在控制台上打印结果。max() 方法是Math类的一种方法,它返回两个数字中的较大者。

当我们浏览链接并查看 max() 方法签名时,我们发现以下内容:

2.png

在上面的方法签名中,我们看到方法签名有访问说明符public、非访问修饰符static、返回类型int、方法名max() 、参数列表(int a, int b)。在上面的示例中,我们没有定义方法,而是调用了方法。这是预定义方法的优点。它使编程变得不那么复杂。

同样,我们也可以看到 print() 方法的方法签名。

用户自定义方法

用户或程序员编写的方法称为用户定义方法。这些方法根据需要进行修改。

如何创建用户定义的方法

让我们创建一个用户定义的方法来检查数字是偶数还是奇数。首先,我们将定义方法。

//用户定义的方法 
public static void findEvenOdd(int num)  
{  
//方法体  
if(num%2==0)   
System.out.println(num+"为偶数");   
else   
System.out.println(num+"为奇数");  
}  

我们已经定义了名为 findevenodd() 的上述方法。它有一个int类型的参数num。该方法不返回任何值,这就是我们使用 void 的原因。方法体包含检查数字是偶数还是奇数的步骤。如果数字是偶数,则打印数字是偶数,否则打印数字是奇数

如何调用或调用用户定义的方法

一旦我们定义了一个方法,就应该调用它。程序中方法的调用很简单。当我们调用或调用用户定义的方法时,程序控制转移到被调用的方法。

import java.util.Scanner;  
public class EvenOdd  
{  
public static void main (String args[])  
{  
//创建扫描仪类对象
Scanner scan=new Scanner(System.in);  
System.out.print("请输入数字:");  
//从用户读取值 
int num=scan.nextInt();  
//方法调用 
findEvenOdd(num);  
}  

在上面的代码片段中,一旦编译器到达findEvenOdd(num) 行,控制权就会转移到方法并相应地给出输出。

让我们将两个代码片段组合在一个程序中并执行它。

EvenOdd.java

import java.util.Scanner;  
public class EvenOdd  
{  
public static void main (String args[])  
{  
//创建扫描仪类对象
Scanner scan=new Scanner(System.in);  
System.out.print("请输入数字:");  
//从用户读取值 
int num=scan.nextInt();  
//method calling  
findEvenOdd(num);  
}  
//方法调用 
public static void findEvenOdd(int num)  
{  
//方法体 
if(num%2==0)   
System.out.println(num+"为偶数");   
else   
System.out.println(num+"为奇数");  
}  
}  

输出 1:

请输入数字:12
12是偶数

输出 2:

请输入数字:99
99是奇数

让我们看看另一个将值返回给调用方法的程序。

在下面的程序中,我们定义了一个名为add()的方法来对两个数字求和。它有两个整数类型的参数n1和n2。n1 和 n2 的值分别对应于 a 和 b 的值。因此,该方法将 a 和 b 的值相加并将其存储在变量 s 中并返回总和。

Addition.java

public class Addition   
{  
public static void main(String[] args)   
{  
int a = 19;  
int b = 5;  
//方法调用 
int c = add(a, b); //a,b为实参 
System.out.println("a和b之和=" + c);  
}  
//用户定义的方法 
public static int add(int n1, int n2) //n1和n2为形参  
{  
int s;  
s=n1+n2;  
return s; //返回总和 
}  
}  

输出:

a和b之和=24

静态方法

具有 static 关键字的方法称为静态方法。换句话说,属于类而不是类实例的方法称为静态方法。我们还可以通过在方法名称前使用关键字static来创建静态方法。

静态方法的主要优点是我们可以在不创建对象的情况下调用它。它可以访问静态数据成员,也可以改变它的值。它用于创建实例方法。它是通过使用类名来调用的。静态方法的最佳示例是main()方法。

静态方法示例

Display.java

public class Display  
{  
public static void main(String[] args)   
{  
show();  
}  
static void show()   
{  
System.out.println("这是一个静态方法的例子。");  
}  
}  

输出:

它是静态方法的一个例子。

实例方法

类的方法称为实例方法。它是类中定义的非静态方法。在调用或调用实例方法之前,需要创建其类的对象。让我们看一个实例方法的例子。

InstanceMethodExample.java

public class InstanceMethodExample  
{  
public static void main(String [] args)  
{  
//创建类的对象 
InstanceMethodExample obj = new InstanceMethodExample();  
//调用实例方法  
System.out.println("总和为: "+obj.add(12, 13));  
}  
int s;  
//用户定义的方法,因为我们没有使用static关键字 
public int add(int a, int b)  
{  
s = a+b;  
//返回总和 
return s;  
}  
}  

输出:

总和为: 25

有两种类型的实例方法:

  • 访问方法
  • 增变法

访问器方法:读取实例变量的方法称为访问器方法。我们可以很容易地识别它,因为该方法以单词get为前缀。它也被称为吸气剂。它返回私有字段的值。它用于获取私有字段的值。

例子

public int getId()    
{    
return Id;    
}    

Mutator 方法:方法读取实例变量并修改值。我们可以很容易地识别它,因为该方法以单词set为前缀。它也被称为settermodifiers。它不返回任何东西。它接受取决于字段的相同数据类型的参数。它用于设置私有字段的值。

例子

public void setRoll(int roll)   
{  
this.roll = roll;  
}  

访问器和修改器方法的示例

Student.java

public class Student   
{  
private int roll;  
private String name;  
public int getRoll()//访问器方法  
{  
return roll;  
}  
public void setRoll(int roll) //mutator 方法  
{  
this.roll = roll;  
}  
public String getName()   
{  
return name;  
}  
public void setName(String name)   
{  
this.name = name;  
}  
public void display()  
{  
System.out.println("卷号:"+roll);  
System.out.println("学生姓名:"+name);  
}  
}  

抽象方法

没有方法体的方法称为抽象方法。换句话说,没有实现被称为抽象方法。它总是在抽象类中声明。这意味着如果类具有抽象方法,则该类本身必须是抽象的。要创建抽象方法,我们使用关键字abstract

句法

abstract void method_name();  

抽象方法的例子

Demo.java

abstract class Demo //抽象类  
{  
//抽象方法声明 
abstract void display();  
}  
public class MyClass extends Demo  
{  
//方法实现 
void display()  
{  
System.out.println("抽象方法...");  
}  
public static void main(String args[])  
{  
//创建抽象类对象 
Demo obj = new MyClass();  
//调用抽象方法 
obj.display();  
}  
}  

输出:

抽象方法...

工厂方法

它是一种将对象返回给它所属的类的方法。所有静态方法都是工厂方法。例如,NumberFormat obj = NumberFormat.getNumberInstance();

标签: java, Java面试题, Java下载, java教程, java技术, Java学习, Java学习教程, Java语言, Java开发, Java入门教程, Java进阶教程, Java高级教程, Java笔试题, Java编程思想