推荐学习专栏:Java 编程进阶之路【从入门到精通】
方法是组合在一起来执行操作语句的集合
,将具有独立功能的代码块组织成为一个整体,使其具有特殊功能,并且能实现达到代码复用的效果。
例如我们要在程序中多次判断一个数字是奇数还是偶数,这时,我们就可以将判断一个数的奇偶性的代码段封装成一个方法,后面再使用时只需要调用这个方法,大大提高了编程的效率和代码的复用性。
创建语法:
访问修饰符 返回值类型 方法名(参数列表){
方法体 ;
}
示例:封装一个方法判断奇偶性
public class Test {
public static void main(String[] args) {
judgment(10);//结果:偶数
int a = 11;
judgment(a);//结果:奇数
}
//1.定义奇偶判断方法
public static void judgment(int number) {
//2.方法中使用if语句判断是奇数还是偶数
if (number % 2 == 0) {
System.out.println("偶数");
} else {
System.out.println("奇数");
}
}
}
按照 Java 中方法是否带有返回值,是否带有参数,可以将方法分为四大类:
方法在使用前要先创建,创建完成之后可以在程序中调用,而不是直接运行。下面我们根据方法的不同分类分别来学习方法的使用。
无参数无返回值的方法很好理解,例如封装一个方法打印 HelloWorld :
public class Test {
public static void main(String[] args) {
print();
}
public static void print( ) {
System.out.println("HelloWorld");
}
}
我们经常会根据一个方法产出的结果,来去组织另一段代码逻辑,为了拿到这个方法产生的结果,就需要定义带有返回值的方法。
示例:封装一个方法打印 HelloWorld ,并且返回 boolean 值 true 。
public class Test {
public static void main(String[] args) {
boolean i= print();
System.out.println(i);
}
public static boolean print( ) {
System.out.println("HelloWorld");
return true;
}
}
使用有参数的方法可以用同一个方法处理不同的数据。在使用有参数的方法时,必须说明参数的数据类型,否则程序报错,并且多个参数之间使用逗号分隔。
在定义有参数的方法时,要在方法中提前定义好变量,此时我们就可以在方法中使用这些变量,而在调用方法时,就是要给这些变量赋值。在定义方法时的参数叫做形参,而调用方法时的参数叫做实参。
示例:封装一个方法,计算两数之和并打印。
public class Test {
public static void main(String[] args) {
add(2,3);
}
public static void add(int a,int b) {
int c=a+b;
System.out.println("a+b="+(a+b));
}
}
用同一个方法处理不同的数据,且返回值用来处理另一段代码的逻辑。此时可以用有参数带返回值的方法来处理。
示例:封装一个方法,计算两数之和并返回,在主方法中打印结果。
public class Test {
public static void main(String[] args) {
int c = add(1, 2);
System.out.println(c);
}
public static int add(int a, int b) {
return a + b;
}
}
递归 是一个十分重要的算法思想,使用递归可以解决实际生活中的很多问题,简单来说,递归就是一个方法直接或者间接的调用自己
,从而将问题转化为本质相同但规模较小的子问题来解决。
在学习递归时,我们通常结合斐波那契数列问题一起理解其思想。
斐波那契数列,又称黄金分割数列,这个数列从第 3 项开始,每一项都等于前两项之和。在数学上,斐波那契数列以如下递推的方法定义:
public class Test {
public static void main(String[] args) {
System.out.println(fibonacci(50));
}
public static int fibonacci(int n) {
if (n == 1 || n == 2) { //特殊情况,分开讨论
return 1;
}
if (n > 2) {
return fibonacci(n - 1) + fibonacci(n - 2); //递归调用
}
return -1; //如果输入错误的n,一律返回-1
}
}
我们使用一般的方法和递归算法进行对比:
public class Test {
public static void main(String[] args) {
System.out.println(fibonacci2(50));
}
public static long fibonacci2(int n) {
if (n < 1) {
return -1;
}
if (n == 1 || n == 2) {
return 1;
}
long a = 1l, b = 1l, c = 0l; //定义三个long类型整数
for (int i = 0; i < n - 2; i++) {
c = a + b; //第3个数的值等于前两个数的和
a = b; //第2个数的值赋值给第1个数
b = c; //第3个数的值赋值给第2个数
}
return c;
}
}
方法二我们用了 for 循环解决了斐波那契数列问题,此时,使用方法二的效率更高一点,运行时发现,当 n 的数值偏大时,使用递归算法程序明显花费更长的时间。
相信这里我们已经对递归算法有了理解,在后序的算法学习中,通过解决实际的问题,我们会对递归算法有更加深入的理解。现在学习递归的思想也可以加深对 Java 方法的理解。
本文浅谈了Java 方法,通过 Java 方法的分类学习了不同类型的方法的创建和使用。在学习 Javase 程序基础时,我们只需要了解方法的思想,后面在学习 Java 面向对象编程时,会进行深入的学习。
欢迎订阅学习Java编程进阶之路专栏,专栏文章持续更新!