01. 方法概述和格式说明
-
方法
- 概述
- 一个功能代码模块
- 作用
- 提高代码的复用性
- 概述
-
语法
修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2...){ 功能代码; return 返回值; }
- 修饰符
- public stiatic
- 返回值类型
- 规定返回值得数据类型
- 方法名
*-
- 是标识符的一种
- 如果是一个单词,全部小写
- 如果是多个单词,从第二个单词开始首字母大写
- 参数类型 参数名1,参数类型 参数名2…
- 定义方法执行时的输入参数
- 功能代码
- 复用的代码模块
- return 返回值;
- 返回结果,并结束方法
-
- 修饰符
-
代码实现
import java.util.Scanner; /** * 方法 * 需求:加减乘除 * @author 海锋 * */ public class Demo01_Method { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println("输入两个数:"); int num1 = input.nextInt(); int num2 = input.nextInt(); //调用方法 System.out.println(addMethod(num1,num2)); System.out.println(subMethod(num1,num2)); System.out.println(multiplyMethod(num1,num2)); System.out.println(divideMethod(num1,num2)); input.close(); } //加法 public static int addMethod(int num1,int num2) { int sum = num1 + num2; return sum; } //减法 public static int subMethod(int num1,int num2) { int sub = num1 - num2; return sub; } //乘法 public static int multiplyMethod(int num1,int num2) { int multiply = num1 * num2; return multiply; } //除法 public static double divideMethod(int num1,int num2) { double divide = num1 / num2; return divide; } }
02. 方法练习之存钱取钱
-
代码实现
/** * 方法 * 需求:银行存取钱 * @author 海锋 * */ public class Demo02_Method { public static void main(String[] a) { getMoney(1000); saveMoney(10000000); } /** * 取钱 * @param money,金额 * @return */ public static int getMoney(int money) { System.out.println("客服丽丽,^_^,您要取多少钱?"); System.out.println("要取:"+money+"美金"); System.out.println("好的,先生,^_^"); return money; } /** * 存钱 * @param money,金额 */ public static void saveMoney(int money) { System.out.println("客服香香,^_^,您要存多少钱"); System.out.println("要存" + money + "美金"); System.out.println("好的,先生,"+money+"美金,钱存好了,^_^"); } }
03. 方法练习之加减乘除
import java.util.Scanner;
/**
* 方法
* 需求:加减乘除
* @author 海锋
*
*/
public class Demo03_Method {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("输入两个数:");
double num1 = input.nextInt();
double num2 = input.nextInt();
//调用方法
System.out.println(addMethod(num1,num2));
System.out.println(subMethod(num1,num2));
System.out.println(multiplyMethod(num1,num2));
System.out.println(divideMethod(num1,num2));
input.close();
}
//加法
public static double addMethod(double num1,double num2) {
double sum = num1 + num2;
return sum;
}
//减法
public static double subMethod(double num1,double num2) {
double sub = num1 - num2;
return sub;
}
//乘法
public static double multiplyMethod(double num1,double num2) {
double multiply = num1 * num2;
return multiply;
}
//除法
public static double divideMethod(double num1,double num2) {
double divide = num1 / num2;
return divide;
}
}
04. 方法练习之结合键盘录入
- 需求
- 键盘录入两个数据,返回两个数中的较大值
- 键盘录入两个数据,比较两个数是否相等
import java.util.Scanner;
/**
* 方法练习
* 需求:键盘录入两个数据,返回两个数中的较大值
键盘录入两个数据,比较两个数是否相等
* @author 海锋
*
*/
public class Demo01_Method {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("输入第一个数:");
int num1 = input.nextInt();
System.out.println("输入第二个数:");
int num2 = input.nextInt();
System.out.println("最大值是:"+getMax(num1, num2));
System.out.println("是否相等:"+isEquals(num1, num2));
input.close();
}
/**
* 方法一:最大值
* @param num1
* @param num2
* @return
*/
public static int getMax(int num1 , int num2) {
return num1 > num2 ? num1 : num2;
}
/**
* 方法二:是否相等
* @param num1
* @param num2
* @return
*/
public static String isEquals(int num1 , int num2) {
if(num1 == num2) {
return "相等";
}else {
return "不相等";
}
}
}
05. 方法重载
-
概念
- 同一个类中,方法名相同,参数列表(参数类型、参数个数)必须不同,与返回值类型无关。
-
代码实现
/** * 方法的重载 * 需求: 求和 * 2个整数 * 3个小数 4个整数 * @author 海锋 * */ public class Demo04_Method { public static void main(String[] args) { //调用方法 System.out.println(addMethod(1,2)); System.out.println(addMethod(3.4,4.6,6.7)); System.out.println(addMethod(5,3,7,9)); } //加法 /** * 两个数求和的方法 * @param num1 * @param num2 * @return */ public static int addMethod(int num1,int num2) { int sum = num1 + num2; return sum; } /** * 三个小数求和的方法 * @param num1 * @param num2 * @param num3 * @return */ public static double addMethod(double num1,double num2,double num3) { double sum = num1 + num2 + num3; return sum; } /** * 四个数求和的方法 * @param num1 * @param num2 * @param num3 * @param num4 * @return */ public static int addMethod(int num1,int num2,int num3,int num4) { int sum = num1 + num2 + num3 + num4; return sum; } }
06. 单一职责原则
-
分类
- 五大基本设计原则(SOLID)
- 单一职责原则(single responsibility princple)
- 开闭原则(open close princple)
- 迪米特法则(Law Of Demeter)
- 接口隔离原则(Interface Isolation Princple)
- 依赖倒置原则(Dependency Inversion Princple)
- 五大基本设计原则(SOLID)
-
单一职责原则(single responsibility princple)
- 一个模块、一个方法只负责一件事
-
代码实现
-
反例
-
代码的耦合度过高,相互之间都有关联
-
代码复用性较差
public static void main(String[] args) { //对两个数,求和、求商、求积 int num1 = 1; int num2 = 2; int sum = num1 + num2; System.out.println("sum : " + sum); int shang = num1 / num2; System.out.println("shang : " + shang); int ji = num1 * num2; System.out.println("ji : " + ji); }
-
-
正例
public static void main(String[] args) {//测试,调用方法 //对两个数,求和、求商、求积 int num1 = 1; int num2 = 2; //alt+shift+m:快速生成方法 getSum(num1, num2); getShang(num1, num2); getJi(num1, num2); } private static void getJi(int num1, int num2) { int ji = num1 * num2; System.out.println("ji : " + ji); } private static void getShang(int num1, int num2) { int shang = num1 / num2; System.out.println("shang : " + shang); } public static void getSum(int num1, int num2) { int sum = num1 + num2; System.out.println("sum : " + sum); }
-
07. 栈的概念
- 概述
- 它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈 顶,相对地,把另一端称为栈底
- 向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成 为新的栈顶元素
- 从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈 顶元素。
08. 递归的概念
-
概念
- 方法自己调用自己
-
需求
- 求5的阶乘
-
代码实现
-
非递归
public static void method01(int num) { int jieCheng = 1; for (int i = 1; i <= num; i++) { jieCheng *= i; } System.out.println(jieCheng); }
-
递归
-
public static int jieCheng(int num) {
if (num == 1) {
return 1;
} else {
return num * jieCheng(num - 1);
}
}
-
循环和递归的区别
- 相同点
- 重复做事
- 不同点
- 循环得知道循环次数,而递归不需要知道循环次数
- 循环更加节省内存,而递归不节省内存
- 相同点
09. 数组的概念
- 为什么要有数组
- 方便维护一组相同类型的数据
- 初始化
- 动态初始化
- 静态初始化
10. 数组的初始化及动态初始化
-
数组初始化
- 创建数组,并初始化数组中的元素
-
分类
- 动态初始化
- 创建数组,给定数组长度,由系统给元素设定默认初值
- 静态初始化
- 动态初始化
-
语法
数据类型[] 变量名 = new 数据类型[长度];
-
代码实现
/** * 数组 * @author 海锋 * */ public class Demo07_Array { public static void main(String[] args) { long[] num = new long[6]; for( int i = 0;i < num.length;i++) { System.out.println(num); } } }
11. java中的堆
- 栈
- 方法
- 局部变量
- 堆
- 对象
- 成员变量
- 方法区
- 面向对象