
JAVA8新特性
文章平均质量分 75
失业找工作中
it小白的学习笔记,加油!
展开
-
JAVA8新特性
Java 8 (又称为 jdk 1.8) 是 Java 语言开发的一个主要版本。 Oracle 公司于 2014 年 3 月 18 日发布 Java 8 ,它支持函数式编程,新的 JavaScript 引擎,新的日期 API,新的Stream API 等。新特性Java8 新增了非常多的特性,我们主要讨论以下几个:Lambda 表达式− Lambda 允许把函数作为一个方法的参数(函数作为参数传递到方法中)。Lambda表达式初探介绍了为什么要使用Lambda 表达式 。Lambda基础语法介绍原创 2021-08-18 11:24:22 · 184 阅读 · 0 评论 -
HashMap源码
HashMap基于哈希表的Map接口实现,是以key-value存储形式存在,即主要用来存放键值对。HashMap 的实现不是同步的,这意味着它不是线程安全的。它的key、value都可以为null。此外,HashMap中的映射不是有序的。1.存取无序的2.键和值位置都可以是null,但是键位置只能是一个null3.键位置是唯一的,底层的数据结构控制键的4.jdk1.8前数据结构是:链表 + 数组 jdk1.8之后是 : 链表 + 数组 + 红黑树5.阈值(边界值) > 8 并且数组长度大于64,才将链表转原创 2023-06-09 07:00:00 · 765 阅读 · 0 评论 -
ClassLoader源码
ClassLoader 顾名思义就是类加载器 ClassLoader 是一个抽象类 没有父类。原创 2023-06-04 05:46:27 · 566 阅读 · 0 评论 -
Enum源码
枚举是一个被命名的整型常数的集合,用于声明一组带标识符的常数。枚举在曰常生活中很常见,例如一个人的性别只能是“男”或者“女”,一周的星期只能是 7 天中的一个等。类似这种当一个变量有几种固定可能的取值时,就可以将它定义为枚举类型。当一个Java类第一次被真正使用到的时候静态资源被初始化,Java类的加载和初始化过程都是线程安全的。所以,创建一个enum类型是线程安全的。在 JDK 1.5 之前没有枚举类型,那时候一般用接口常量来替代。而使用 Java枚举类型 enum 可以更贴近地表示这种常量。原创 2023-06-01 06:43:33 · 75 阅读 · 0 评论 -
Lambda 表达式中的变量必须是 final 的吗
如果我们定义了一个变量,想要在Lambda 表达式中修改变量的值,编译器会发出警告:“variable used in lambda expression should be final or effectively final”。比如对一个list进行遍历,遍历的过程中对i进行操作Java 规范中是这样规定的:Lambda 表达式中要用到的,但又未在 Lambda 表达式中声明的变量,必须声明为 final 或者是 effectively final,否则就会出现编译错误。原创 2023-04-22 08:15:26 · 950 阅读 · 0 评论 -
CompletableFuture异步回调
FutureFuture接口定义了操作异步任务执行一些方法,如获取异步任务的执行结果、取消任务的执行、判断任务是否被取消、判断任务执行是否完毕等。比如我们将任务提交到线程池里面,然后我们会得到一个Futrue,在Future里面有isDone方法来 判断任务是否处理结束,还有get方法可以一直阻塞直到任务结束然后获取结果,(最好放在最后)但整体来说这种方式,还是同步的,因为需要客户端不断阻塞等待或者不断轮询才能知道任务是否完成。Future的主要缺点如下:(1)不支持手动完成我提交了一个任务,但是执原创 2021-09-19 20:30:03 · 991 阅读 · 1 评论 -
Lambda表达式初探
Lambda表达式的本质只是一个"语法糖",由编译器推断并帮你转换包装为常规的代码,因此你可以使用更少的代码来实现同样的功能,Lambda是一个匿名函数,我们可以把Lambda表达式理解为是一段可以传递的代码(将代码像数据一样进行传递),可以写出更简洁、更灵活的代码。Lambda表达式是Java SE 8中一个重要的新特性。lambda表达式允许你通过表达式来代替功能接口。 lambda...原创 2018-08-04 21:05:08 · 231 阅读 · 0 评论 -
Lambda基础语法
JAVA8中引入了一个新的操作符“->”,该操作符称为箭头操作符或Lambda操作符,箭头操作符将Lambda表达式拆分成两部分 左侧: Lambda表达式的参数列表 右侧: Lambda表达式中所需要执行的功能,即Lambda体所谓Lambda表达式就是接口的实现的一种方式,Lambda表达式的参数列表就是接口中抽象方法的参数列表,Lambda表达式中所需要执行的功能就是...原创 2018-08-04 21:46:43 · 1678 阅读 · 0 评论 -
四大内置核心函数式接口
* JAVA8 内置的四大核心函数式接口** Consumer<T> :消费型接口* void accept(T t);* Supplier<T> :供给型接口* T get();* Function<T, R> :函数型接口* R apply(T t);* Predicate&...原创 2018-08-04 23:27:22 · 1327 阅读 · 0 评论 -
方法引用与构造器引用
一、方法引用方法引用 当Lambda体中内容的方法已经实现,我们可以使用“方法引用” (可以理解为方法引用是Lambda表达式的另一种表现形式)方法引用:使用操作符 “::” 将方法名和对象或类的名字分隔开来。 如下三种主要使用情况:对象::实例方法类::静态方法类::实例方法使用方法引用的注意事项: 1、Lambda体中调用方法的参数列表与返回值类型,要与函数式...原创 2018-08-05 10:52:29 · 566 阅读 · 0 评论 -
Stream API
Java8中有两大最为重要的改变。第一个是 Lambda 表达式;另外一 个则是 Stream API(java.util.stream.*)。Stream 是 Java8 中处理集合的关键抽象概念,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找、过滤和映射数据等操作。使用Stream API 对集合数据进行操作,就类似于使用 SQL 执行的数据库查询。也可以使用 Stream API ...原创 2018-08-05 18:28:44 · 286 阅读 · 0 评论 -
并行流与串行流 Fork/Join框架
一、并行流概念: 并行流就是把一个内容分成多个数据块,并用不同的线程分别处理每个数据块的流。 java8中将并行进行了优化,我们可以很容易的对数据进行并行操作。Stream API可以声明性的通过parallel()与sequential()在并行流与顺序流之间进行切换。二、Fork/Join 框架 就是在必要的情况下,将一个大任务,进行拆分(fork)成若干个小任务(拆到不...原创 2018-08-05 21:11:17 · 657 阅读 · 0 评论 -
Optional容器类
public class Godness { private String name; public Godness() { } public Godness(String name) { this.name = name; } public String getName() { return name...原创 2018-08-05 22:05:45 · 304 阅读 · 0 评论 -
接口中的默认方法与静态方法
一、接口中的默认方法Java 8中允许接口中包含具有具体实现的方法,该方法称为 “默认方法”,默认方法使用 default 关键字修饰。 public interface MyFun { default String getName(){ return "hahaha1"; }}public class MyClass { public ...原创 2018-08-05 22:37:57 · 2656 阅读 · 1 评论 -
新时间日期 API
传统时间格式化的线程安全问/** * 测试传统时间格式化的线程安全问题 */public class TestSimpleDateFormat { public static void main(String[] args) throws ExecutionException, InterruptedException { SimpleDateFormat ...原创 2018-08-06 00:02:22 · 355 阅读 · 0 评论 -
重复注解与类型注解
Java 8对注解处理提供了两点改进:可重复的注解及可用于类 型的注解第一讲 重复注解重复注解:即允许在同一申明类型(类,属性,或方法)前多次使用同一个类型注解在java8 以前,同一个程序元素前最多只能有一个相同类型的注解;如果需要在同一个元素前使用多个相同类型的注解,则必须使用注解“容器”。public@interfaceAuthority {St...原创 2018-08-06 00:10:02 · 1464 阅读 · 0 评论