这一系列的源码探索我打算结合一些常见的疑问深入探究一下。答案也许都知道,但是从源码角度来说为什么会这样,我想还是有许多人是模糊状态的。所以一起来带着问题来看看java的设计吧~ String类中包含了许多方法,关于它的构造方法就有十来种。此外还有一些工具方法,比如字符串的比较:equals()、contentEquals()、compareTo()、compareToIgnoreCase()等等,另外还有比如字符串的长度length(),字符串的拼接concat()等等方法…. java源码探索系列-01 String java
用过旧版java时间类库的都清楚,其实用起来的感觉是非常糟糕的。比如java.sql.Date与java.util.Date除了包名以外类名都是一样的。(sql.Date是继承util.Date重写的)这种设计其实是非常差的,很容易搞混淆。再比如,当你在并发情景下用java.util.Date是很容易出问题的,因为java.util.Date是属于线程不安全的。针对这些问题,java8推出了一系列新的API. PS: 新的时间相关API都在java.time.*包下 时间日期类 java8系列-06 时间相关API java
空指针异常我想是程序员见到比较多的异常啦,今天来探索的这个Optional工具类就是来处理这类问题的。用过Google Guava(后期应该会出一个系列,请持续关注)的都应该知道,Guava这套工具类库里面也有一个Optional,而且作用和今天来探索的这个java新特性是一样的。既然又是探索,那我们先打开idea,然后ctrl+鼠标左键进到optional的世界看一下吧。 源码片段 接下来我将逐行解释一下源码(像我这样给jdk源码这样加注释的怕是很少了_) java8系列-05 Optional java
Stream英文直译为“流”,其实这里也是对文件流、集合流等各种流的操作。(虽然我们最常用在Collection集合中进行操作,但它的应用可是很广泛的)它是java8中最亮眼的特性之一,能极大的方便我们对于数据的操作,让程序员们能写出非常高效率又干净的代码。下面我们先看一个例子,从例子中进行初步认识,然后再带大家慢慢的来揭露它的神秘面纱。 Stream基础 先来感受一下Stream的神奇吧~ java8系列-04 Stream java
前面两篇讲了Lambdas表达式和函数式接口。这一篇继续来讲java8的一些新特性 - 方法的引用和注解的新特性。 方法的引用 方法的引用可以使语言的构造更加简洁,减少冗余代码。可以直接引用已有Java类或对象(实例)的方法或构造器。与lambda联合使用。方法引用使用一对冒号 :: 。 下面用一个类来举例,来区分它所支持的四个不同的方法引用 java8系列-03 方法的引用和注解新特性 java
上一章已经说了函数式接口的基本概念(java8系列-01 Lambdas 表达式)。函数式接口(Functional Interface)说白了就是只包含了一个抽象方法的接口。下面来剖析一下最常用的四类函数式接口: 提示:本章更多的用代码来叙述,不会更多的文字。 Function功能型函数式接口 上一章有讲到,Function接口是接收一个T类型的参数,返回一个R类型的结果。 … java8系列-02 函数式接口(Function、Consumer、Predicate、Supplier) java
Lambdas表达式是java 8的一个最重要的新特性。它允许把函数作为一个方法的参数(在一个方法中用函数来作为方法传递进去)。或者把一段代码看成是数据。 Lambdas表达式实例 基本语法如下: (parameters) -> experssion 或 (parameters) -> {statements;} … java8系列-01 Lambdas 表达式 java
负载均衡Ribbon 网络请求框架RestTemplate RestTemplate是Spring Resources中一个访问第三方RESTful API接口的网络请求框架。 RestTeamplate是用来消费REST服务的,所以RestTeamplate也有HEAD、GET、POST、PUT、DELETE、OPTIONS等方法。注意:head对应的方法为headForHeaders(),其它都为xxxForObject() 示例: @RestControllrt public class RestController{ @GetMapping("/testRest") public String testRest(){ RestTemplate restTemplate = new RestTemplate(); return restTemplate.getForObject("htpps://www.baidu.com/",String.class); } } 04Ribbon java