java基础
文章平均质量分 81
听到微笑
这个作者很懒,什么都没留下…
展开
-
到今天了你还不会集合的Stream操作吗?你要out了
一. Stream操作步骤1.1 Stream的三个操作步骤1.2 Stream的特征1.3 入门小案例二. 创建流2.1 创建有限流2.2 创建无限流三. Stream中间操作3.1 筛选与切片3.1.1 filter3.1.2 limit3.1.3 skip3.1.4 distinct3.2 映射3.2.1 map3.2.2 flatMap3.3 排序3.3.1 自然排序3.3.2 定制排序四. 终止操作4.1 查找与匹配..原创 2020-08-01 19:52:52 · 443 阅读 · 0 评论 -
Java中双括号初始化是个什么操作
最近在阅读Mybatis源码的时候,看到了一种原来很少见到的语法:public class RichType { ... private List richList = new ArrayList() { { add("bar"); ...原创 2020-04-10 10:55:12 · 909 阅读 · 0 评论 -
一篇文章让你读懂Java异常栈信息
一. 基本的异常打印public class Test { public static void main(String[] args) { fun1();//第4行 } public static void fun1() { fun2();//第8行 } public static void fun2() { ...原创 2020-03-26 14:16:59 · 3752 阅读 · 0 评论 -
深入解析LinkedHashMap
LinkedHashMap是HashMap的一个子类,保存了记录的插入顺序,在用Iterator遍历LinkedHashMap时,先得到的记录肯定是先插入的,也可以在构造时带参数,按照访问次序排序。public void test(){ Map<String,String> map=new LinkedHashMap<>(); map.put("a","...原创 2019-08-15 19:34:49 · 336 阅读 · 0 评论 -
深入解析HashMap源码
HashMap是Java程序员使用频率最高的用于映射(键值对)处理的数据类型。随着JDK(Java Developmet Kit)版本的更新,JDK1.8对HashMap底层的实现进行了优化,例如引入红黑树的数据结构和扩容的优化等。 Java为数据结构中的映射定义了一个接口java.util.Map,此接口主要有四个常用的实现类,分别是HashMap、Hashtable、LinkedHash...原创 2019-08-15 10:25:12 · 261 阅读 · 0 评论 -
cglib代理
cglib代理 在此之前,我们学习了JDK动态代理,而JDK动态代理有一定的局限性,因为使用JDK动态代理时,被代理类必须实现接口,然后动态代理生成的代理类同时实现该接口实现代理模式,但在特定情况下没办法让被代理类实现接口,那么此时我们就需要使用cglib代理。代理模式的三要素两个成员:被代理对象、执行者(类似于Spring中切面的概念)使用场景:当某件事情不方便自己做,但是必须要做时...原创 2019-07-12 18:48:31 · 289 阅读 · 0 评论 -
Java8新特性——接口静态方法
概述从Java8开始接口发生两个大的改变,一个是引入了default关键字,另个一个就是允许静态方法的存在。default关键字在《Java8新特性default关键字,引出Java多继承问题》一文中详细描述过了。现在我们就挖掘一下接口静态方法与传统类的静态方法有什么区别。接口中的静态方法public interface Hello { static void sayHe...原创 2019-04-26 18:12:06 · 3500 阅读 · 0 评论 -
你可能不知道的秘密——String s=new String(“abc”)到底创建了几个对象?
String s=new String(“abc”)创建了几个对象? 在探讨上述问题结论之前,我们需要了解常量池这个概念。常量池 由于字符串在Java中被大量使用,为了避免每次都创建相同的字符串对象(这样就意味着占据更多内存),JVM对字符串对象做了一定的优化,有一块专门的区域来存储字符串常量,该区域就是字符串常量池。常量池(constant pool)指的是在编译期被确定,并被保存在已...原创 2019-03-23 18:26:47 · 6927 阅读 · 0 评论 -
BigDecimal类的基本使用
概述java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数。在实际应用中,需要对更大或者更小的数进行运算和处理。float和double只能用来做科学计算或者是工程计算,在商业计算中要用java.math.BigDecimal。BigDecimal所创建的是对象,我们不能使用传统的+、...原创 2019-03-01 13:20:09 · 175 阅读 · 0 评论 -
Java中枚举类的深入理解
概述在此之前由于个人在学习和开发中对枚举类的应用较少,所以对枚举类的知识点并没进行深入的了解,但最近写代码中突然想到了枚举类,抱着完善自身的知识的目的,就较为深入的了解了Java中的枚举类。我在学习任何东西之前都会大致弄清楚这个东西存在的目的是什么,这样才能更加深入的理解一些东西。同样的,在学习枚举类之前,我们也需要摸清楚Java5才出来的枚举类到底有什么作用。为什么会出现枚举类...原创 2019-01-13 16:20:17 · 322 阅读 · 0 评论 -
ThreadLocal原理详解——终于弄明白了ThreadLocal
目录概述API介绍ThreadLocal的理解ThreadLocal的原理分析总结概述在java学习生涯中可能很多人都会听到ThreadLocal变量,从字面上理解ThreadLocal就是“线程局部变量”的意思。简单的说就是,一个ThreadLocal在一个线程中是共享的,在不同线程之间又是隔离的(每个线程都只能看到自己线程的值)。可能一开始把这句话放出来很难理解,那...原创 2019-01-02 10:43:16 · 23031 阅读 · 8 评论 -
Java8新特性default关键字,引出Java多继承问题
概述最近在看JDK集合的源码时,在Collection接口中发现了default关键字,并且惊奇的发现接口中的方法居然包含方法体,这顿时让我产生兴趣,为此我也稍微研究了一下default关键字。很多同学都知道Java在创立之初就摒弃了C++多继承的套路,因为它实在难以学习与使用,在Java的世界中类只能继承一个父类,但是一个接口可以继承多个接口,就比如这样:public interf...原创 2018-12-30 14:18:36 · 1376 阅读 · 1 评论 -
Java类加载过程&&静态代码块的初始化过程
问题的引入 还是老规矩,先说说自己遇到的问题。最近看到了一个比较有意思的Java程序,初次看到这段程序执行的结果还是挺让我意外的,话不多说先上程序,大家也可以揣摩一下(大神自行略过......)class Singleton{ private static Singleton singleton=new Singleton(); public static int c...原创 2018-12-04 20:20:15 · 1293 阅读 · 1 评论 -
JDK动态代理的深入理解
引入代理模式代理模式是框架中经常使用的一种模式,动态代理是AOP(面向切面编程)思想的一种重要的实现方式,在我们常用的框架中也经常遇见代理模式的身影,例如在Spring中事务管理就运用了动态代理,它将Service层原先应该进行的事务管理交给了Spring框架,大大简化了开发流程。在Hibernate中对象的懒加载模式,也运用了JDK的动态代理以及cglib代理。静态代理在说动态代理之...原创 2018-11-14 20:15:31 · 967 阅读 · 1 评论 -
JDK8之前,匿名内部类访问的局部变量为什么必须要用final修饰
前不久在学习中意外发现了自己原来忽略的一个小知识点,挺有意思的,现在我来给大家分享一下!我们先来看一段代码public class Hello { public static void main(String[] args) { String str="haha"; new Thread() { @Override public void run() { ...原创 2018-08-15 20:17:51 · 33392 阅读 · 68 评论 -
JSON转化工具的使用
概述 JSON是一种轻量化的数据传输格式,在各种场景都有运用。比如在ajax中,服务端的数据一般通过JSON字符串的格式传输给前端,前端ajax引擎自动将JSON字符串转化为JS对象(需要将ajax的返回内容格式设置为"json")。那么此时我们在后台服务器中就需要将封装好的JavaBean对象转化为JSON格式字符串来传输给前台ajax引擎,此时使用JSON转化工具将大大简化我们代码...原创 2018-06-04 21:33:14 · 4582 阅读 · 0 评论 -
Java8 Lambda表达式入门
可能很多人都听说过java8的新特性----Lambada表达式,但可能很多人都不知道Lambda表达式到底有什么用,下面我带大家理解一下Lambada表达式。 在平时的编程中,我们常常会用到匿名内部类,见下面代码:package 示例;import static org.junit.Assert.*;//import org.junit.Test;publi...原创 2018-07-26 11:39:15 · 1455 阅读 · 4 评论