复习:
1.lambda表达式:简化匿名类实现接口中的方法
2.函数式接口:接口中只能有一个抽象方法
3.检查函数式接口的注解:@FunctionalInterface
4.格式:()->{}
5.简化:
省略方法的参数列表的数据类型
如果一个参数,()可以省略
{}如果只有一条语句,可以省略,return也可以省略
6.引用已实现的方法:
如果实现的方法的参数列表,返回类型和接口相同
方法归属者::方法名
7.引用构造方法:
类名::new
-------------------------------------------------
垃圾回收:
垃圾回收机制:低级线程负责堆内存对象的回收,没有变量引用,
引用变量赋值 null,标识对象可以回收,但是不马上回收
内存溢出:创建对象时,内存不够用
内存泄漏:对象使用完成,没有及时回收
------------------------------------------------------
模拟使用银行卡缴费
定义类:UnionCard
成员变量:
private String id;//卡号
private double balance;//余额
private int pw;//密码
方法:
1.public UnionCard(String id, double balance, int pw)
功能:初始化成员变量
2.setXX/getXX方法
3.public void saveMoney(int money)
存钱的方法
4.public boolean takeMoney(int money)
取钱的方法,如果余额为<0,返回false,否则返回true
5.public boolean checkPw(int pw)
验证密码是否相同,相同返回true,否则返回false
定义类:BOC
1.public BOC(String id, double balance, int pw)
构造方法传值
定义接口:PayTelInter
boolean payTel(int money)
1.定义抽象方法,开通交电话费的功能
定义类:ATM
成员变量:
1.private UnionCard card;
方法:
1.public void insertCard(UnionCard card)
模拟插卡的功能,不同卡片显示不同的menu
2.public void showBocMenu()
//如果密码正确,显示显示中国银行的菜单,否则显示密码错误,退出系统
1 查看余额 2存钱 3取钱 4 交话费 5退出
3.private void showBalance();
显示余额
输入1时,调用此方法,显示余额;控制台,显示输入0 返回
4.private void saveBalance();
完成存钱的功能,并输出成功
输入2时,调用此方法;控制台,显示输入0 返回
5.private void takeBalance()
完成取钱的功能,如果满足取钱的条件,显示成功,否则显示失败!!!,余额不足
输入3时,调用此方法;控制台,显示输入0 返回
6.private void payMethod()
完成交话费的功能,使用lambda表达式完成,如果满足交话费的条件,显示缴费成功!!!
否则显示失败!!!,余额不足
输入4时,调用此方法;控制台,显示输入0 返回
7.输入5是,退出
定义入口类:MainClass
main方法:
同理:定义ICBC类和交有线电视费的接口payTV
--------------------------------------------------------
1.常用的工具包
java.lang:String,System,Thread,Math,Object等,自动导入
java.io:输入输出流
java.net:网络编程
java.util:工具类,集合,时间日期类等
2.Object类
clone方法:克隆
* 1.自定义的类,使用clone 方法,当前类必须要实现Cloneable接口
* 如果不实现此接口,那么会抛出异常java.lang.CloneNotSupportedException
* 2.因为object类的clone是protected修饰的,要重写此方法
* 才能在不同包中访问,把访问修饰符定义为public
* 3.Cloneable接口中没有方法,是一个标识性的接口,
* 针对Object类的clone方法的实现
* 4.浅拷贝:引用变量拷贝的是地址,所有克隆的对象改变了对象的属性,
* 原对象的属性也发生改变
* 5.深拷贝:引用变量拷贝一份对象,克隆对象的属性改变,原对象的属性不发生变化
toString方法
返回对象的字符串表示形式
包名.类名@hashCode(内存地址)
当打印对象时,默认调用
如果不想使用object类toString方法,可以重写此方法
equals方法
equals方法比较对象是否相同 == 比较的是两个对象的内存地址
如果想表示对象的内容相同,返回true,则重写此方法
hashCode方法
返回一个hash code码,Integer,内存地址有关的hash算法
如果equals返回true,hashCode相同,重写hashCode
------------------------------------------------------------
3.String类
String,StringBuilder,StringBuffer区别
String是不可变的
StringBuilder,StringBuffer是可变的字符串
StringBuilder是线程不安全的
StringBuffer是线程安全的
4、方法: