背景 NPE问题,100%的Java程序员都碰到,并且曾经是心中的痛。 1965年英国TonyHoare引入了Null引用,后续的设计语言包括Java都保持了这种设计。 一个例子 业务模型 Person 有车一族, 有Car字段, Car 车,每个车都有购买保险, 有Insurance字段; Ins ...
分类:
编程语言 时间:
2019-11-17 23:51:09
阅读次数:
94
java8 Stream 什么是 Stream? Stream(流)是一个来自数据源的元素队列并支持聚合操作 元素是特定类型的对象,形成一个队列。 Java中的Stream并不会存储元素,而是按需计算。 流的来源。 可以是 集合 , 数组 , I/O channel , 产生器generator 等 ...
分类:
编程语言 时间:
2019-11-17 11:05:35
阅读次数:
88
前言: 在公司中开发项目时碰到一个从Java8引入的一个Optional类,以前jdk版本使用的比较低,没有使用过,于是我在网上浏览了一些文档写篇文章学习总结一下,希望没有用过的朋友们都能够快速学习到。 Optional 被定义为一个简单的容器,主要解决的问题是开发中常见的空指针异常,本质上这是一个 ...
分类:
编程语言 时间:
2019-11-16 14:43:26
阅读次数:
86
模拟场景针对于常用的操作API,比如流操作(字符流、字节流),时间操作等,仅仅了解概念性的定义终究是无法了解该类的用途和使用方式;这种情况在使用的时候便一脸茫然,脑海中映射不到对应的知识点。本篇博客将通过一个简单的应用场景来体会这两个类的使用。 项目开发阶段,有一个关于下单发货的需求:如果今天下午三 ...
分类:
编程语言 时间:
2019-11-15 09:17:34
阅读次数:
61
Lambda表达式 :也可称为闭包,Lambda允许把函数作为一个方法的参数(函数作为参数传递到方法中),免去了使用匿名方法的麻烦,并且给予Java简单但是强大的函数化的编程能力 ...
分类:
编程语言 时间:
2019-11-14 23:42:49
阅读次数:
80
java8的stream用户 数据准备: public class Dish { public String name; //菜的名称 public Boolean vegetaian; //是否为素 public Integer calories; //卡路里 public Type type; ...
分类:
编程语言 时间:
2019-11-13 22:06:08
阅读次数:
65
背景 java的日期和时间API设计不理想,java8引入新的时间和日期API就是为了解决这个问题。 |老的日期API的核心类|缺点| | | | |Date|月从0开始,年最小从1900年开始,没有时区的概念| |Calendar|月从0开始| |DateFormat|线程不安全| |其它|同时存 ...
分类:
编程语言 时间:
2019-11-12 20:32:41
阅读次数:
100
本文基于 "https://github.com/h2pl/Java Tutorial" 的总结 Java7 HashMap(数组+链表) Java7 ConcurrentHashMap(段(数组+链表)+ ReentrantLock) Java8 HashMap (数组+链表+红黑树) ( 如果链 ...
分类:
编程语言 时间:
2019-11-10 19:34:07
阅读次数:
73
接口lambda函数式接口函数式接口的声明和使用Java8中常用的函数式接口PredicateFunction、BiFunctionSupplier、ConsumerComparatorOptional流容器类和流的转化流的转化Java8发布了挺久了,而且有很大的变动。这里是一篇迟来的部分Java8... ...
分类:
编程语言 时间:
2019-11-10 09:46:57
阅读次数:
84
(手机横屏看源码更方便) 注:java源码分析部分如无特殊说明均基于 java8 版本。 注:本文基于ForkJoinPool分治线程池类。 简介 随着在硬件上多核处理器的发展和广泛使用,并发编程成为程序员必须掌握的一门技术,在面试中也经常考查面试者并发相关的知识。 今天,我们就来看一道面试题: 如 ...
分类:
编程语言 时间:
2019-11-09 10:07:16
阅读次数:
93