什么是方法?
Java方法是语句的集合,它们在一起执行一个功能。
- 方法是解决一类问题的步骤的有序组合
- 方法包含于类或对象中
- 方法在程序中被创建,在其他地方被引用
设计方法的原则:方法的本意是功能块,就是实现某个功能的语句块的集合。我们设计方法的时候,最 好保持方法的原子性,就是一个方法只完成1个功能,这样利于我们后期的扩展。
方法的优点:
- 使程序变得更简短而清晰。
- 有利于程序维护。
- 可以提高程序开发的效率。
- 提高了代码的重用性。
方法的定义
Java的方法类似于其它语言的函数,是一段用来完成特定功能的代码片段,一般情况下,定义一个方法 包含以下语法:
修饰符 返回值类型 方法名(参数类型 参数名){
...
方法体
...
return 返回值;
}
方法包含一个方法头和一个方法体。下面是一个方法的所有部分:
修饰符:
修饰符,这是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型。
返回值类型:
方法可能会返回值。returnValueType 是方法返回值的数据类型。有些方法执行所需 的操作,但没有返回值。在这种情况下,returnValueType 是关键字void。
方法名:
是方法的实际名称。方法名和参数表共同构成方法签名。
参数类型:
参数像是一个占位符。当方法被调用时,传递值给参数。这个值被称为实参或变量。参数列表是指方法的参数类型、顺序和参数的个数。参数是可选的,方法可以不包含任何参数。
形式参数:在方法被调用时用于接收外界输入的数据。
实参:调用方法时实际传给方法的数据。
方法体:
方法体包含具体的语句,定义该方法的功能。
分类
- 无参无返回值方法
public class JavaTest {
//定义一个名为print的方法,并且输出值
public void print() {
System.out.println("JavaTest ");
}
public static void main(String[] args) {
//main方法中调用print方法
JavaTest test = new JavaTest ();//创建对象,对象名为test
//通过对象名.方法名()的形式进行调用
test.print();
//JavaTest test = new JavaTest ();
test.show();//调用show方法
}
//无参数无返回值的操作
public void show() {
System.out.println("show");
}
}
- 无参带返回值方法
public class JavaTest {
public static void main(String[] args) {
//首先创建一个名为scores的对象
JavaTest scores = new JavaTest ();
//调用方法并且接收返回值,保存在变量score中
int score = scores.classSum();
System.out.println("和为:"+score);
}
//无参数返回值的方法
public void classSum() {
int a =2 ;
int b =55;
int sum = a+b ;
return sum;
}
}
- 带参数无返回值方法
public class JavaTest {
public static void main(String[] args) {
//创建一个对象
JavaTest scores = new JavaTest ();
//调用show方法,并且传递参数
scores .show("博客");
scores .calcAvg(87, 91);
}
//创建一个带参数的方法
public void show(String name) {//String为参数类型,name为参数名
System.out.println("欢迎您!"+name+"。");
}
//无参数无返回值的操作
public void calcAvg(double score1,double score2){
double sum = score1 + score2;
double avg = sum / 2;
System.out.print("平均分:"+avg);
}
}
- 带参数带返回值方法
public class JavaTest {
//创建一个带参数的方法
public void show(String name) {//String为参数类型,name为参数名
System.out.println("欢迎您!"+name+"。");
}
public static void main(String[] args) {
JavaTest scores = new JavaTest ();
scores .show("博客");
}
}
方法的重载
public static double max(double num1, double num2) {
if (num1 > num2)
return num1;
else
return num2;
}
public static int max(int num1, int num2) {
int result;
if (num1 > num2)
result = num1;
else
result = num2;
return result;
}
如果你调用max方法时传递的是int型参数,则 int型参数的max方法就会被调用;
如果传递的是double型参数,则double类型的max方法体会被调用,这叫做方法重载;
就是说一个类的两个方法拥有相同的名字,但是有不同的参数列表。
Java编译器根据方法签名判断哪个方法应该被调用。
方法重载可以让程序更清晰易读。执行密切相关任务的方法应该使用相同的名字。
重载的方法必须拥有不同的参数列表。你不能仅仅依据修饰符或者返回类型的不同来重载方法。
可变参数
方法的可变参数的声明如下所示:
typeName... parameterName
在方法声明中,在指定参数类型后加一个省略号(…)
一个方法中只能指定一个可变参数,它必须是方法的最后一个参数。任何普通的参数必须在它之前声明。
public static void main(String[] args) {
// 调用可变参数的方法
printMax(34, 3, 3, 2, 56.5);
printMax(new double[]{1, 2, 3});
}
public static void printMax(double... numbers) {
if (numbers.length == 0) {
System.out.println("No argument passed");
return;
}
double result = numbers[0];
//排序!
for (int i = 1; i < numbers.length; i++) {
if (numbers[i] > result) {
result = numbers[i];
}
}
System.out.println("The max value is " + result);
}