方法、调用、重载、递归的定义、使用及练习(1)

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;
}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值