Java初级·方法

本文详细介绍了Java中的方法,包括方法的优点、格式、定义与调用的要素、返回值、方法重载和递归。通过实例解析了方法在内存中的执行原理和常见错误,提供了一系列习题帮助巩固学习。

方法优点

1.简化了代码

2.提高了代码的可读性。

3.提高了代码维护性

4.提高了代码扩展性

概述:

完成特定功能的代码片段,通过数学意义上上的函数引入的y=f(x,y)

格式;

【访问全兴修饰符】返回值类型【输出的类型】方法名(参数类型 变量名,参数类型,变量名,。。。)
{
方法体;
【return 返回值;】
}
访问权限修饰符;这里后面讲解面向对象的时候讲解,暂时使用public static。
返回值类型;这里可以是八大基本数据类型和引用类型,这里的类型和返回值对应类型满足类型转换。
方法名:满足方法名的命名贵方,见名知义,一般是动词。
参数类型:这里可以是八大基本数据类型和引用数据类型,这里传参同样满足类型转换
形参:方法定义的时候的参数。
实参:方法调用的时候的参数
方法体:功能代码

return

单独使用:return;表示直接退出当前所在的方法。
带返回值使用:这里的返回值类型和方法定义的返回值类型保持一致,或者满足类型转换。
如果一个方法没有返回值,那么声明方法的时候返回值类型写void关键字;
当一个方法声明了返回值类型,就必须显示使用return关键字返回结果给调用者。
方法定义的位置;类体以内,方法体以外。

返回值:就是功能的结果,由return带给调用者,哪里调用的返回到哪里去。

方法定义的三要素

1。参数列表【输入】
2.返回值类型【输出】
3.方法名【调用】

方法调用的三要素

1.需要什么参数就给什么类型的参数。
2.返回什么类型的值就使用什么类型接收
3.方法参数的个数类型顺序必须保持一致。

方法的调用方式

1.直接输出【适用于方法的返回值为void的情况】
2。输出调用【适用于方法的返回值后续不需要使用但需要输出的情况】
3.赋值调用【适用于方法的返回值后续还要继续使用的情况】

方法在内存中的执行原理
JVM的组成部分:类加载器,运行时数据区,执行引擎,本地接口

我们重点关系:运行时数据区
运行时数据区划分:

堆区
方法去
本地方法去
程序计数器

常见错误和注意事项

1.调用方法时不能指定实参类型!

2.形参和实参数据类型不一致

3.形参和实参个数不一致

4.方法不调用不执行

5.方法不能签到定义

6。方法在调用时不用传递数据类型

7.如果方法在定义的时候有返回值,那么在方法中一定要有return关键字返回数据给调用者。

注意:为了在书写方法的时候避免程序报错,可以优先写好返回值,如返回整型,就return 0;

重载

为什么要学习方法重载?

解决多个方法的参数不同但是方法功能相同的重名问题

简化代码,提高了扩展性和维护性。

方法递归

为什么要学习方法递归?

1.可读性提高

2.简化代码

3.常用于文件夹遍历,通讯录的制作,层级菜单。

本质:本质就是对自身回路的重复

递归在java是通过方法实现的,就是方法中调用方法自己本身。

1.递归必须要有出口,否则会容易出现死递归。

2.递归的次数太多容易出现内存溢出。

3.构造方法不能递归。

举例说明

public class Practice06 {
	public static void main(String[] args) {
		Scanner input=new Scanner(System.in);
		System.out.println("输入阶乘数");
		int n=input.nextInt();
		System.out.println(factorial(n));
	}
	public static long factorial(int sum){
		if (sum==1) {
			return 1;
		}else{
			return sum*factorial(sum-1);
		}
	}
}

本章习题

1.递归求5的阶乘以及斐波那契数列

  • 5 * 4 * 3 * 2 * 1
public class MethodDemo05 {
	public static void main(String[] args) {
		System.out.println(getJieChengByLoop(5));
		System.out.println(getJieChengByDiGui(5));
		System.out.println(fiboonaqi(4));
	}
	
	public static long getJieChengByLoop(int num) {
		long jc = 1;
		for (int i = 1; i <= num; i++) {
			jc *= i;
		}
		return jc;
	}
	

	public static long getJieChengByDiGui(int num) {
		if (num <= 0) {
			return 0;
		}
		
		// 先确定出口
		if (num == 1) {
			return 1;
		}
		
		return num * getJieChengByDiGui(--num);
	}
	
	/*
	 * 1、1、2、3、5、8、13、21、34
	 * 从第三项开始,数值等于前两项的和
	 */
	public static int fiboonaqi(int n) {
		
		if (n <= 0) {
			return 0;
		}
		
		// 先确定出口
		if (n == 1 || n == 2) {
			return 1;
		}
		
		return fiboonaqi(n - 1) + fiboonaqi(n - 2);
	}
}

2.求两个数之和

public class Practice06 {
	public static void main(String[] args) {
		Scanner input=new Scanner(System.in);
		System.out.println("请输入第一个数");
		int a=input.nextInt();
		System.out.println("请输入第二个数");
		int b=input.nextInt();
		System.out.println("两个数之和为"+getsum(a, b));
	}
	public static int getsum(int sum1,int sum2){
		int total=sum1+sum2;
		return total;
	}
}

3.判断是否是闰年

public class Practice06 {
	public static void main(String[] args) {
	Scanner input=new Scanner(System.in);
	System.out.println("请输入年份");
	int year=input.nextInt();
	isLeapYear(year);
	}
	public static void  isLeapYear(int years){
		if (years%4==0||years%100==0&&years%100==0) {
			System.out.println(years+"年是闰年");
		}else{
			System.out.println(years+"年不是闰年");
		}
	}
}

4.判断一个数是否是素数

public class Practice06 {
	public static void main(String[] args) {

		Scanner input = new Scanner(System.in);
		System.out.println("请输入一个数");
		int j = input.nextInt();
		isPrime(j);
	}
	public static void isPrime(int src) {
		if (src < 2) {
			System.out.println("该数不是素数");
		}
		if (src == 2 && src == 3) {
			System.out.println("该数是素数");
		}
		for (int i = 2; i < src; i++) {
			if (src % i == 0) {
				System.out.println("该数不是素数");
				break;
			}
			System.out.println("该数是素数");
			break;
		}
	}
}

5.打印m行n列的*型矩形

public class Practice06 {
	public static void main(String[] args) {
Scanner input =new Scanner(System.in);
System.out.println("请输入行");
int m=input.nextInt();
System.out.println("请输入列");
int n=input.nextInt();
Println(m,n);	
	}
	public static void Println(int row,int col) {
		for (int i = 0; i <row; i++) {
			for (int j = 0; j <col; j++) {
				System.out.print("*");//此处要细心拉!!
			}System.out.println();
		}
	}
}

6.打印九九乘法表

public class Practice06 {
	public static void main(String[] args) {
	Println();	
	}
	public static void Println(){
		for (int i =1; i <=9; i++) {
			for (int j =1; j <=i; j++) {
				System.out.print(i+"*"+j+"="+i*j+" ");
			}System.out.println();
		}
	}
}

课后练习

编写一个计算器,实现加减乘除,调用测试通过
编写一个方法实现求圆的面积,参数为半径
写一个方法实现数字倒置(3456?6543)并返回这个数字
编写判断回文数字的方法,并调用测试 12321
求两个数的最大公约数(用递归实现)

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值