内部类与API
1.内部类
1、内部类&成员内部类
-
1、格式:
-
外部类.内部类 变量类 =new 外部类().new内部类();
-
-
2、内部类变量和外部类变量重名时的访问格式:
-
外部类名.this.成员变量;
-
2、静态内部类
-
1、静态内部类格式
-
2、静态内部类如何创建对象
-
外部类.内部类 变量名 = new 外部类.内部类();
-
-
3、调用静态内部类中的静态方法
-
外部类.内部类.方法名();
-
3、局部内部类
-
1、局部内部类的位置
-
局部位置
-
-
2、局部内部类的局限性
-
只能在方法中使用
-
4、匿名内部类
-
1、匿名内部类的格式
-
父类 对象名 = new 父类(){ 重写方法; };
-
-
2、匿名内部类的作用:
-
当发现一个方法的形式参数是父类或者接口类型,就可以直接传入匿名内部类对象
-
-
3、匿名内部类的应用(方法形参是接口):
-
1、将自定义接口作为方法形参
-
2、调用方法时传递匿名内部类对象
-
-
4、匿名内部类的应用(ArrayList的forEach方法)
-
1、list的forEach方法传递匿名内部类对象
-
2、Object类
1、Object类(equals方法)
-
1、概述
-
Java中所有类的父类
-
-
2、equals作用
-
用来判断两个对象是否相等,默认判断相等的规则,可以利用IDEA自动生成(根据对象的数据值判断)
-
-
3、equals和==的区别
-
如果重写,idea的方案,equals方法比较的是数据值的
-
3、StringBuilder类
1、String Builder的概述&构造器
-
1、String Builder是什么:
-
一个可变字符串
-
-
2、StringBuilder构造器
-
1、StringBuilder是可变的,字符串的操作效率高
-
2、String是不可变的,字符串操作效率低
-
2、StringBuilder的常用方法
-
1、append方法
-
拼接
-
可以拼接任意类型数据
-
返回的还是对象自己,所以可以链式编程
-
-
2、reverse方法
-
反转
-
返回的也是对象自己
-
-
3、toString方法:
-
把StringBuilder转成String
-
4、基本类型包装类
1、基本类型包装概述:
-
基本类型对应的引用类型
-
2、包装类如何创建子类对象
-
推荐使用valueOf方法
-
推荐使用自动装箱,底层还是valueOf方法
-
2、包装类的数据转换
-
1、基本类型转换字符串
-
String类的valuaOf方法
-
-
2、字符串转基本类型
-
包装类的paese.....开头的方法
-
3、自动装箱和拆箱
-
1、自动装箱含义,本质调用什么方法
-
可以直接把基本数据类型的值赋值给包装类类型的变量
-
valueOf
-
-
2、自动拆箱含义,本质调用了什么方法
-
可以直接把包装类对象赋值给基本数据类型的变量
-
5、BigDecimal类
1、BigDecimal四则运算
-
1、BigDecimal类的作用
-
BigDecimal可以用类对数据进行精确运算,并且保留小数位
-
-
2、BigDecimal获取对象
-
valueOf方法
-
-
3、BigDecimal常用方法
-
add:加法
-
subs tract:减法
-
multiply:减法
-
divide:除法
-
2、BigDecimal除法保留指定小数位
-
1、保留小数位的舍入模式:
-
1、RoundingMode.HALF_UP :四舍五入
-
2、RoundingMode.DOWN :去尾法
-
3、RoundingMode.up:如果保留两位小数,则第三位小数不管是满5都要进一
-
常用API和Lambda
1、日期类
1、作用:
-
用于对日期进行格式化或解析
2、构造器
-
SimpleDateFormat sdf =new SimpleDateFormat(日期格式)
-
日期格式:yyyy年MM月dd日 HH时mm分ss秒
3、常见方法
-
format(Date date)
-
日期格式化:将Date对象转换为日期字符串
-
-
parse(String str)
-
日期解析:将日期字符串转换成Date对象
-
2、Arrays工具类
Arrays工具类
-
1、作用:用于操作数组的工具类
-
2、构造器:构造器被私有
-
3、常用方法
-
toString方法
-
把数组中的元素拼接成字符串,方便打印
-
-
binarySearch方法
-
使用二分查找法查找数组的元素
-
数组必须是排序过的
-
-
sort方法默认排序
-
对数组中的元素排序,默认升序
-
-
3、常见算法
1、冒泡排序原理
-
每一轮从0号索引开始,相邻两个数据比较,大的往后放
-
确定轮数:数组长度减一次
-
确定比较的范围:0~数组长度-1-i
2、折半查找原理:
-
要确定最小和最大范围,查找中间索引位置:mid=(start+end)/2
-
如果中间位置的数据大,end需要减少,中间位置变成end-1
-
如果中间位置数据小了,start需要增加,中间位置变成start=mid+1
-
如果刚好相等,则为找到
-
如果start大于end仍没找到,那就是数组没有这个数
4、Lambda表达式
1、Arrays自定义排序
-
1、sort方法的作用:升序
-
2、Comparator的两个参数的含义
-
当前存入的数据和里面已经有的数据
-
-
3、Comparator返回值含义
-
如果是正数,当前左边值大于右边,否则右边
-
2、Lambda基本格式应用:
-
1、函数式接口
-
只有一个抽象方法的接口
-
-
2、函数式接口的匿名内部类对象
-
3、Lambda表达式对匿名内部类对象
-
参数类型可以省略
-
只有一个参数的话,小括号也可以省略
-
如果方法体只有一个,并且是return语句,return必须省略
-
3、Lambda表达式简化格式应用:
-
1、省略参数类型:
-
任何时候都可以省略参数类型
-
-
2、省略小括号
-
参数只有一个的时候可以省略小括号
-
-
3、省略{ }
-
方法语句体只有一一个时,可以省略大括号,return以及最后的分号
-
5、方法引用
1、静态方法引用:
-
1、场景:
-
如果Lambda表达式中调用了一个静态方法,而且左右两边的参数相同,则可以使用静态方法引用
-
-
2、格式:
-
类名::方法名
-
2、实例方法引用:
-
1、场景:
-
如果Lambda表达式中调用了一个实例方法,而且左右两边的参数相同,则可以使用实例方法引用
-
-
2、格式:
-
对象名::方法名
-
3、特殊用法:
-
1、场景:
-
如果Lambda表达式中调用了实例方法,而且Lambda表达式的一个参数作为方法的主调,其他参数作为被调用的方法的参数,此时也可以用类名引用
-
-
2、格式:
-
类名::方法名
-
4、构造器引用:
-
1、场景:
-
如果某个Lambda表达式里只是在创建对象,并且前后参数情况一致,就可以使用构造器引用
-
-
2、格式:
-
类名::new
-