【Java编程教程】详解Java 中的方法
通常,方法是执行某些任务的方法。同样,Java 中的方法是执行特定任务的指令集合。它提供了代码的可重用性。我们还可以使用方法轻松修改代码。在本节中,我们将学习什么是 Java 中的方法、方法的类型、方法声明以及如何调用 Java 中的方法。
# 什么是Java中的方法?
方法是代码块或语句集合或组合在一起以执行特定任务或操作的一组代码。它用于实现代码的可重用性。我们写一次方法,多次使用它。我们不需要一次又一次地编写代码。它还提供了代码的轻松修改和可读性,只需添加或删除一段代码即可。该方法仅在我们调用或调用它时执行。
方法声明
方法声明提供有关方法属性的信息,例如可见性、返回类型、名称和参数。它有六个组件,称为方法头,如下图所示。
方法签名:每个方法都有一个方法签名。它是方法声明的一部分。它包括方法名和参数列表。
访问说明符:访问说明符或修饰符是方法的访问类型。它指定方法的可见性。Java 提供了四种类型的访问说明符:
Public:当我们在应用程序中使用 public 说明符时,所有类都可以访问该方法。
Private:当我们使用私有访问说明符时,该方法只能在定义它的类中访问。
Protected:当我们使用受保护的访问说明符时,该方法可以在同一个包或不同包的子类中访问。
Default:当我们在方法声明中不使用任何访问说明符时,Java默认使用default访问说明符。它仅在同一个包中可见。
Return Type:返回类型是方法返回的数据类型。它可能有原始数据类型、对象、集合、void 等。如果该方法不返回任何内容,我们使用 void 关键字。
Method Name: 这是一个唯一的名称,用于定义方法的名称。它必须与方法的功能相对应。假设,如果我们正在创建一个用于两个数字相减的方法,则方法名称必须是subtraction()。方法由其名称调用。
Parameter List:它是由逗号分隔并括在一对括号中的参数列表。它包含数据类型和变量名。如果该方法没有参数,则将括号留空。
Method Body:它是方法声明的一部分。它包含要执行的所有操作。它包含在一对大括号内。
# 命名方法
在定义方法时,请记住方法名称必须是动词并以小写字母开头。如果方法名称有两个以上的单词,则第一个名称必须是动词,后跟形容词或名词。多词方法名中,除第一个词外,每个词的首字母必须大写。例如:
单字方法名: sum()、area()
多词方法名: areaOfCircle()、stringComparision()
一个方法也可能与同一个类中的另一个方法同名,这被称为方法重载。
# 方法类型
Java中有两种类型的方法:
预定义方法
用户自定义方法
预定义方法
在 Java 中,预定义方法是已经在 Java 类库中定义的方法,称为预定义方法。它也被称为标准库方法或内置方法。我们可以随时在程序中调用它们来直接使用这些方法。一些预定义的方法有length(), equals(), compareTo(), sqrt()等。当我们在程序中调用任何一个预定义的方法时,都会在后台运行一系列与相应方法相关的代码,已存储在库中。
每个预定义方法都在一个类中定义。比如print()方法就是在java.io.PrintStream类中定义的。它打印我们在方法中编写的语句。例如,print("Java"),它在控制台上打印 Java。
让我们看一个预定义方法的例子。
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() 方法签名时,我们发现以下内容:
在上面的方法签名中,我们看到方法签名有访问说明符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为前缀。它也被称为setter或modifiers。它不返回任何东西。它接受取决于字段的相同数据类型的参数。它用于设置私有字段的值。
例子
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();
扫码进群记得备注:城市、昵称和技术方向。