A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李志旭 初级黑马   /  2019-5-19 10:14  /  1271 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Lambda表达式(day13)
Lambda表达式的标准格式【理解】
  • 格式:
​        (形式参数) -> {代码块}
  • 形式参数:如果有多个参数,参数之间用逗号隔开;如果没有参数,留空即可
  • ->:由英文中画线和大于符号组成,固定写法。代表指向动作
  • 代码块:是我们具体要做的事情,也就是以前我们写的方法体内容
  • 组成Lambda表达式的三要素:
  • 形式参数,箭头,代码块
Lambda表达式和匿名内部类的区别【理解】
  • 所需类型不同
  • 匿名内部类:可以是接口,也可以是抽象类,还可以是具体类
  • Lambda表达式:只能是接口
  • 使用限制不同
  • 如果接口中有且仅有一个抽象方法,可以使用Lambda表达式,也可以使用匿名内部类
  • 如果接口中多于一个抽象方法,只能使用匿名内部类,而不能使用Lambda表达式
  • 实现原理不同
  • 匿名内部类:编译之后,产生一个单独的.class字节码文件
  • Lambda表达式:编译之后,没有一个单独的.class字节码文件。对应的字节码会在运行的时候动态生成
方法引用符
::  该符号为引用运算符,而它所在的表达式被称为方法引用
格式
类名::静态方法
对象::成员方法
类名::成员方法
类名::new
函数式接口(day14)
  • 概念
有且仅有一个抽象方法的接口
  • 如何检测一个接口是不是函数式接口
@FunctionalInterface
放在接口定义的上方:如果接口是函数式接口,编译通过;如果不是,编译失败
常用函数式接口之Supplier【应用】
  • Supplier接口
Supplier<T>接口也被称为生产型接口,如果我们指定了接口的泛型是什么类型,那么接口中的get方法就会生产什么类型的数据供我们使用。
  • 常用方法
只有一个无参的方法
方法名
说明
T get()
按照某种实现逻辑(由Lambda表达式实现)返回一个数据

常用函数式接口之Consumer【应用】
  • Consumer接口
Consumer<T>接口也被称为消费型接口,它消费的数据的数据类型由泛型指定
  • 常用方法
Consumer<T>:包含两个方法
方法名
说明
void accept(T t)
对给定的参数执行此操作
default Consumer<T> andThen(Consumer after)
返回一个组合的Consumer,依次执行此操作,然后执行 after操作

常用函数式接口之Predicate【应用】
  • Predicate接口
Predicate<T>接口通常用于判断参数是否满足指定的条件
  • 常用方法
方法名
说明
boolean test(T t)
对给定的参数进行判断(判断逻辑由Lambda表达式实现),返回一个布尔值
default Predicate<T> negate()
返回一个逻辑的否定,对应逻辑非
default Predicate<T> and(Predicate other)
返回一个组合判断,对应短路与
default Predicate<T> or(Predicate other)
返回一个组合判断,对应短路或

常用函数式接口之Function【应用】
  • Function接口
Function<T,R>接口通常用于对参数进行处理,转换(处理逻辑由Lambda表达式实现),然后返回一个新的值
  • 常用方法
方法名
说明
R apply(T t)
将此函数应用于给定的参数
default <V> Function andThen(Function after)
返回一个组合函数,首先将该函数应用于输入,然后将after函数应用于结果

Stream流的常见生成方式
生成Stream流的方式
  • Collection体系集合
使用默认方法stream()生成流, default Stream<E> stream()
  • Map体系集合
把Map转成Set集合,间接的生成流
  • 数组
通过Stream接口的静态方法of(T... values)生成流
Stream流中间操作方法
常见方法
方法名
说明
Stream<T> filter(Predicate predicate)
用于对流中的数据进行过滤
Stream<T> limit(long maxSize)
返回此流中的元素组成的流,截取前指定参数个数的数据
Stream<T> skip(long n)
跳过指定参数个数的数据,返回由该流的剩余元素组成的流
static <T> Stream<T> concat(Stream a, Stream b)
合并a和b两个流为一个流
Stream<T> distinct()
返回由该流的不同元素(根据Object.equals(Object) )组成的流
Stream<T> sorted()
返回由此流的元素组成的流,根据自然顺序排序
Stream<T> sorted(Comparator comparator)
返回由该流的元素组成的流,根据提供的Comparator进行排序
<R> Stream<R> map(Function mapper)
返回由给定函数应用于此流的元素的结果组成的流
IntStream mapToInt(ToIntFunction mapper)
返回一个IntStream其中包含将给定函数应用于此流的元素的结果

Stream流终结操作方法
  • 概念
终结操作的意思是,执行完此方法之后,Stream流将不能再执行其他操作。
  • 常见方法
方法名
说明
void forEach(Consumer action)
对此流的每个元素执行操作
long count()
返回此流中的元素数

Stream流的收集操作【应用】
  • 概念
对数据使用Stream流的方式操作完毕后,可以把流中的数据收集到集合中。
  • 常用方法
方法名
说明
R collect(Collector collector)
把结果收集到集合中

  • 工具类Collectors提供了具体的收集方式
方法名
说明
public static <T> Collector toList()
把元素收集到List集合中
public static <T> Collector toSet()
把元素收集到Set集合中
public static Collector toMap(Function keyMapper,Function valueMapper)
把元素收集到Map集合中

类加载器(day15)
类加载
  • 类的加载
  • 就是指将class文件读入内存,并为之创建一个 java.lang.Class 对象
  • 任何类被使用时,系统都会为之建立一个 java.lang.Class 对象
  • 类的连接
  • 验证阶段
  • 准备阶段
  • 解析阶段
类加载器
类加载器的作用
  • 负责将.class文件加载到内存中,并为之生成对应的 java.lang.Class 对象。虽然我们不用过分关心类加载机制,但是了解这个机制我们就能更好的理解程序的运行!
JVM的类加载机制
  • 全盘负责
  • 父类委托
  • 缓存机制
Java中的内置类加载器
  • Bootstrap class loader:它是虚拟机的内置类加载器,通常表示为null ,并且没有父null
  • Platform class loader:平台类加载器可以看到所有平台类 ,平台类包括由平台类加载器或其祖先定义的Java SE平台API,其实现类和JDK特定的运行时类
  • System class loader:它也被称为应用程序类加载器 ,与平台类加载器不同。 系统类加载器通常用于定义应用程序类路径,模块路径和JDK特定工具上的类
  • 类加载器的继承关系:System的父加载器为Platform,而Platform的父加载器为Bootstrap
ClassLoader 中的两个方法
  • 方法分类
方法名
说明
static ClassLoader getSystemClassLoader()
返回用于委派的系统类加载器
ClassLoader getParent()
返回父类加载器进行委派

反射反射的概述【理解】
  • 是指在运行时去获取一个类的变量和方法信息。然后通过获取到的信息来创建对象,调用方法的一种机制。由于这种动态性,可以极大的增强程序的灵活性,程序不用在编译期就完成确定,在运行期仍然可以扩展
获取Class类对象的三种方式【应用】
三种方式分类
  • 类名.class属性
  • 对象名.getClass()方法
  • Class.forName(全类名)方法
反射获取构造方法并使用
Class类获取构造方法对象的方法
  • 方法分类
方法名
说明
Constructor<?>[] getConstructors()
返回所有公共构造方法对象的数组
Constructor<?>[] getDeclaredConstructors()
返回所有构造方法对象的数组
Constructor<T> getConstructor(Class<?>... parameterTypes)
返回单个公共构造方法对象
Constructor<T> getDeclaredConstructor(Class<?>... parameterTypes)
返回单个构造方法对象

Constructor类用于创建对象的方法
方法名
说明
T newInstance(Object...initargs)
根据指定的构造方法创建对象

反射获取成员变量并使用【应用】
Class类获取成员变量对象的方法
  • 方法分类
方法名
说明
Field[] getFields()
返回所有公共成员变量对象的数组
Field[] getDeclaredFields()
返回所有成员变量对象的数组
Field getField(String name)
返回单个公共成员变量对象
Field getDeclaredField(String name)
返回单个成员变量对象

Field类用于给成员变量赋值的方法
方法名
说明
voidset(Object obj,Object value)
给obj对象的成员变量赋值为value

反射获取成员方法并使用【应用】
Class类获取成员方法对象的方法
  • 方法分类
方法名
说明
Method[] getMethods()
返回所有公共成员方法对象的数组,包括继承的
Method[] getDeclaredMethods()
返回所有成员方法对象的数组,不包括继承的
Method getMethod(String name, Class<?>... parameterTypes)
返回单个公共成员方法对象
Method getDeclaredMethod(String name, Class<?>... parameterTypes)
返回单个成员方法对象

Method类用于执行方法的方法
方法名
说明
Objectinvoke(Object obj,Object... args)
调用obj对象的成员方法,参数是args,返回值是Object类型



0 个回复

您需要登录后才可以回帖 登录 | 加入黑马