1.上节课的遗漏
hasNextInt实际上是一个判断语句,我要输入一个整数,我在控制台输入一个字符串的时候,hasNextInt可以帮我判断这个字符是不是数字,而不是接收数值,在if判断通过之后执行接收
2.方法定义
public static 返回值类型 方法名(形式参数列表){
方法体;
(return 返回值);
}
public static void add(int a, int b) {
System.out.println(a + b);
}
3.方法调用
public static void main(String[] args){
int x = 1;
int y = 2;
add(x , y):
}
3.接收方法的返回值
public class Main { public static int add(int a, int b){ return a + b; } public static void main(String[] args) { int x = 1; int y = 2; //接收方法的返回值 int ret = add(x,y); System.out.println(ret); } }
4.注意
1.修饰符:现阶段直接使用public static固定搭配
2.返回值类型:如果方法有返回值,返回值类型必须与返回的实体类型一致,如果没有返回值,必须写成void
3.方法名字:使用小驼峰命名
4.参数列表:如果方法没有参数,()中什么都不写,如果有参数,需指定参数类型,多个参数之间用逗号隔开
5.方法体:方法内部要执行的语句
6.在java中方法必须写在类中
7.在java中,方法不能嵌套定义
8.在java中没有方法声明一说
5.方法调用的执行过程
例子1
public class Main { public static int add(int x,int y) { System.out.println("调用方法中 x = " + x + "y = " + y); return x + y; } public static void main(String[] args) { int a = 10; int b = 20; System.out.println("第一次调用方法之前"); int ret = add(a,b); System.out.println("第一次调用方法之后"); System.out.println("ret = " + ret); System.out.println("第一次调用方法之前"); ret = add(30,50); System.out.println("第一次调用方法之后"); System.out.println("ret = " + ret); } }
运行:
第一次调用方法之前
调用方法中 x = 10y = 20
第一次调用方法之后
ret = 30
第一次调用方法之前
调用方法中 x = 30y = 50
第一次调用方法之后
ret = 80
例子2
public class Main { public static int facSum(int n){ int sum = 0; for(int i =1; i<= n; i++){ sum +=fac(i); } return sum; } //求n的阶乘 public static int fac(int n){ int ret = 1; for(int i = 1;i < n; i++){ ret *= i; } return ret; } public static void main(String[] args) { int ret = facSum(5); System.out.println(ret); } }
6.实参和形参的关系
Java中方法的形参就相当于sum函数中的自变量n,用来接收sum函数在调用时传递的值。形参只是方法在定义时需要借助的一个变量,用来保存方法在调用时传递过来的值。
这样的交换是不能运行的,需要使用数组来进行,数组是在堆上面储存的
public static void swap(int[] arr){ int tmp = arr[0]; arr[0] = arr[1]; arr[1] = tmp; } public static void main(String[] args) { int[] arr = {10, 20}; swap(arr); System.out.println("arr[0] = " + arr[0] + "arr[1] = " + arr[1]); }
Java遇到return就结束了,之后的语句就执行不到了。
7.方法的重载
public static int sum(int a, int b){ return a + b; } public static double sum(double a,double b){ return a + b; } public static void main(String[] args) { int a = 10; int b = 20; int ret = sum(a, b); System.out.println(ret); double x = 2.3; double y = 3.6; double ret1 = sum(x,y); System.out.println(ret1); }
1.方法名称必须一样的
2.方法的参数不一样【数据类型,个数,顺序】
3.返回值没有要求
一。使用函数求最大值。
创建方法求两个数的最大值max2,随后在再写一个求3个数的最大值的函数max3,要求:(在max3这个函数中,调用max2这个函数,来求三个数的最大值。
求两个数的最大值 public static double max2(double a, double b){ return a > b ? a : b; } 求三个数的最大值 public static double max3(double a, double b, double c){ double ret = max2(a,b); max2(ret,c); return ret; } public static void main(String[] args) { double a = 15.3; double b = 9.5; double ret = max2(a, b); System.out.println(ret); double x = 84653.485; double y = 56123.01523; double d = 56322.48563; double ret1 = max3(x,y,d); System.out.println(ret1); }
二。求n的阶乘并打印成果
public static int facSum(int n){ int sum = 0; for(int i =1; i<= n; i++){ sum +=fac(i); } return sum; } //求n的阶乘 public static int fac(int n){ int ret = 1; for(int i = 1;i < n; i++){ ret *= i; } return ret; }
public static void main3(String[] args) { int ret = facSum(5); System.out.println(ret);
三。斐波那契数列,使用迭代(循环)实现
求斐波那契数列的第n项的值
public static int fib(int n){ int f1 = 1; int f2 = 1; int f3 = 1; for (int i = 3; i <= n ; i++) { f3 = f1 + f2; f1 = f2; f2 = f3; } return f3; } public static void main(String[] args) { System.out.println(fib(1)); System.out.println(fib(2)); System.out.println(fib(30)); }