方法优点
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
求两个数的最大公约数(用递归实现)
本文详细介绍了Java中的方法,包括方法的优点、格式、定义与调用的要素、返回值、方法重载和递归。通过实例解析了方法在内存中的执行原理和常见错误,提供了一系列习题帮助巩固学习。
5800

被折叠的 条评论
为什么被折叠?



