克隆:A对象的属性值完全拷贝给B对象
A对象重写clone方法 因为不在一个包下
A对象实现cloneAble接口
使用A对象.clone;
浅拷贝
clone是浅克隆
将被复制对象的值和地址都给复制 一个对象改变值两个对象的引用都改变
深拷贝
基本数据拷贝值,字符串复用常量池,引用的类型重新new 一个对象的属性值。
实现:
- 改写clone方法
- 类实现序列化接口 使用字节输出输入流将数据读写
- 使用第三方工具
对象工具类:objects
objects.equals(object1,object2); 先调用判断为空的方法,在调用object1的equals 被重写调用重写的方法。
正则表达式:
string对象.matchs(正则表达式)
正则表达式以 字符串 来表示
爬虫(查找)
pattern类的静态方法
得到匹配器对象
m.find(被查找的字符串) 返回boolean 底层记录第一次找到的索引 假设0 4
使用
m.group()得到字符串 str字串。
一次只读一个所以需要对find做死循环处理
网络爬虫练习(未完)
时间API
Date:时间 精确到毫秒
simpleDateFormart : 格式化时间类
日历时间(格林威治时间为时间标准时间,北京时间+8小时)
Date
空参为当前时间 空参使用有参
有参为指定时间
setTime(long time) 设置毫秒值
getTime() 获取时间的毫秒值 得到的是数值
sout打印的时间对象 是改写了toString() 得到时间的拼接值
时间的计算 因为Date是对象不能直接加减 所以需要时间对象getTime()做加减
时间加一年:注意溢出 加L。。。
ctrl alt + m 抽取方法
simpleDateFormat类作用 时间格式化
把时间变成好看的格式
将字符串解析为时间格式(解析为date对象 然后使用时间对象getTime做计算)
第二个 构造方法传递的是时间格式字符串
默认格式
自己指定格式
解析:
parse(Date a,String 时间格式)
定义simpleDateFormat 有参构造 要和需要转的字符串格式一致
SimpleDateFormat simpleDateFormat=new SimpleDateFormat();
Date date=new Date();
String format = simpleDateFormat.format(date);
System.out.println(format);
String str="2000-11-11";
SimpleDateFormat sim=new SimpleDateFormat("yyyy-MM-dd");
Date parse = sim.parse(str);
System.out.println(parse);
SimpleDateFormat S=new SimpleDateFormat("yyyy年MM月dd日");
String format1 = S.format(parse);
System.out.println(format1);
String miao="2023年11月11日 0:0:0";
SimpleDateFormat ss=new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
Date parse1 = ss.parse(miao);
System.out.println(parse1);
Lambda表达式
函数式编程 :强调随去做 而不是对象本身
面向对象:先找对象 在让对象做事情
什么是函数式接口: 有且只有一个的抽象方法的接口叫做函数式接口 所以 lambda表达式不用选择使用哪个函数。
1、参数类型可以省略不写
2、只有一个参数,参数类型和()可以省略
3、方法体只有一行 大括号 分号 return只有可以省略 但是需要同时省略。
String [] str = {"a","aa","aaa","aaaa"};
Arrays.sort(str, (o1,o2)->
o1.length()-o2.length()
);
System.out.println( Arrays.toString(str));;
面试官:元素排序Comparable和Comparator有什么区别? - 腾讯云开发者社区-腾讯云 (tencent.com)
迭代器:
forEach遍历
传入 Comsumer接口 ,重写accept接口 ,实际的forEach方法会简单for循环 ,然后将值给到accept方法的参数。。