2019_01_12学习笔记
笔记内容:关于方法的定义、调用、重载、递归的使用。
方法、调用、重载、递归的定义及使用
/*
1.为什么需要学习方法?
a.提高了的代码的可读性
b.提高代码的可维护性
c.简化了代码
d.提高了代码的可扩展性
e.让我们从方法的实现者转而成为了方法的调用者,这也是面向对象思想的基础
2.方法概念: 本质就是执行特定功能的代码片段
方法其实在数学中称之为函数: y = f(x,y,z)
3.方法的格式
访问权限修饰符 返回值类型 方法名称(参数类型 参数名1, 参数类型 参数名2, 参数类型 参数名3, …, 参数类型 参数名n) [throws 异常类]{
方法体;
return 返回值;
}
访问权限修饰符:后面讲解面向对象讲解,目前用 public static
返回值类型: 这里表示方法执行完毕之后的结果,这个类型可以是八大基本数据类型,也可以是引用类型,必须和return关键字返回的结果的类型保持一致
如果一个方法没有返回结果,那么这个类型填写void
方法名称: 方法名称是给外界调用的,必须要满足见名知意,驼峰命名法
参数类型: 这个类型可以是八大基本数据类型,也可以是引用类型
参数名: 本质就是一个局部变量,既然是变量,就满足变量的命名规范
形式参数: 方法定义的时候的参数
实际参数: 方法调用的时候的参数
方法体: 完成特定功能的代码片段
return 返回值: 如果一个方法执行之后不需要返回结果,那么这段代码可以不写,但是可以写return;表示退出方法体
如果一个方法执行之后有返回值,那么return关键字返回的结果的类型保持一致,这里返回给调用者使用,谁调用就返回给谁
4.方法书写位置: 和主方法保持平级关系,类体以内,方法体以外
5.方法书写的三要素
1.返回值类型: 功能的结果
2.方法名: 明确方法是用来做什么功能的
3.参数列表: 完成该功能需要什么原材料
5.方法的调用
1.方法需要什么类型的参数就传什么类型的参数
2.返回什么类型就必须拿什么类型接受
3.形参和实参数的个数,顺序,类型必须保持一致
6.方法的注意事项
1.方法不调用不执行
2.方法不能够嵌套定义
3.方法如果有返回值声明,那么方法体不许使用return关键字显示返回
7.三种调用方式
1.直接调用 getSum(10, 20); 一般都是针对返回值类型为void的情况
2.输出调用 针对对方法的结果不需要后续使用的情况
3.赋值调用 针对对方法的结果还需要后续使用的情况
8.方法调用原理
1.方法通过实参传递给形参完成方法的调用
2.方法会通过return关键字返回给调用者,并且销毁自身方法帧
3.方法每次都会给局部变量申请内存空间,不同的方法变量名可以重复
9.练习
1、求2个数之和
2、打印n行n列的*型矩形
3、键盘录入年份判断是否是闰年
4、键盘录入数据,返回两个数中的较大值
5、判断一个数是否是素数
6、编写一个计算器,实现加减乘除,调用测试通过
7、编写一个方法实现求圆的面积,参数为半径
8、写一个方法实现数字倒置(3456?6543)并返回这个数字
9、编写判断回文数字的方法,并调用测试 12321
10、求两个数的最大公约数(用递归实现)
练习1:计算两个数的和
public class MethodDemo01 {
}
public static void main(String[] args){
public static int getSum(int m, int n) {
int sum = m + n;
return sum;
}
}
练习2:打印n行n列的*型矩形
返回值类型: void
参数列表: int m, int n
方法名: printMNRectangle
*/
public static void printMNRectangle(int m, int n){
for(int i = 0; i < m; i++){
for(int j = 0; j < n; j++){
System.out.print("*");
}
System.out.println();
}
}
练习3.键盘录入年份判断是否是闰年
*/
import java.util.Scanner;
public class MethodDemo02 {
public static void main(String[] args){
/*Scanner input = new Scanner(System.in);
System.out.print("请输入需要判断的年份:");
int year = input.nextInt();*/
// 方法的调用
// 1880 1884 1888 1892 1896 1904 1908 1912 1916 1920 1924 1928 1932 1936
// boolean isLeapYear = isLeapYear(year);
/* if(isLeapYear){
System.out.println(year + "是闰年");
} else {
System.out.println(year + "不是闰年");
} */
// System.out.println((isLeapYear(year)) ? year + "是闰年": year + "不是闰年");
System.out.println((isLeapYear(new Scanner(System.in).nextInt())) ? "是闰年": "不是闰年");
}
/*
返回值类型: boolean
参数列表: int year
方法名: isLeapYear
普通年:能被4整除但不能被100整除的年份为普通闰年。(如2004年就是闰年,1999年不是闰年);
世纪年:能被400整除的为世纪闰年。(如2000年是闰年,1900年不是闰年);
*/
public static boolean isLeapYear(int year){
/*if((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)){
return true;
} else {
return false;
}*/
// boolean isLeapYear = ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) ? true: false;
return ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) ? true: false;
}
}
练习4:键盘录入数据,返回两个数中的较大值
import java.util.Scanner;
public class MethodDemo03 {
public static void main(String[] args){
Scanner input = new Scanner(System.in);
System.out.print("请输入第一个数:");
int num1 = input.nextInt();
System.out.print("请输入第二个数:");
int num2 = input.nextInt();
// int maxValue = getMaxValue(num1, num2);
System.out.println("两个数中较大的值为:" + getMaxValue(num1, num2));
}
/*
返回值类型: int
参数列表: int a, int b
方法名: getMaxValue
*/
public static int getMaxValue(int a, int b){
/*if(a >= b){
return a;
} else {
return b;
}*/
return (a >= b) ? a: b;
}
}
练习5:判断一个数是否是素数
素数的概念: 质数又称素数。一个大于1的自然数,除了1和它自身外,不能整除其他自然数的数叫做质数
1. 大于1
1 不是素数
2 是素数
3 除了1和3之外 2 是素数
4 除了1和4之外 2 3 不是素数
5 除了1和5之外 2 3 4 是素数
6 除了1和6之外 2 3 4 5 不是素数
*/
import java.util.Scanner;
public class MethodDemo04 {
public static void main(String[] args){
Scanner input = new Scanner(System.in);
System.out.print("请输入需要判断的数:");
int num = input.nextInt();
boolean isPrimeNum = isPrimeNum(num);
if(isPrimeNum){
System.out.println(num + "是素数");
} else {
System.out.println(num + "不是素数");
}
}
/*
返回值类型: boolean
参数列表: int num
方法名: isPrimeNum
设置flag标志位
*/
public static boolean isPrimeNum(int num){
// 默认概述就是素数
boolean flag = true;
if(num < 2){
flag = false;
} else {
for(int i = 2; i <= num - 1; i++){
// 除了1和它自身外,不能整除其他自然数的数叫做质数
if(num % i == 0){
flag = false;
break;
}
}
}
return flag;
}
}