随笔分类 - Java基础
摘要:摘要 何为函数式接口? 什么是lambda表达式,lambda表达式的本质; 函数式接口与lambda表达式的联系:lambda是实现函数式接口的一个快捷方式,可以作为函数式接口的一个实例; 常用Java8内置的函数式接口 Function、Predicate、Consumer 和 Supplier
阅读全文
摘要:在之前的两篇文章中主要分析了 Java 栈的缺点 ,为什么不推荐使用 Java 栈 ,以及 为什么不推荐直接使用 ArrayDeque 代替 Java Stack 。更多内容点击下方链接前去查看。 算法动画图解 | 被 "废弃" 的 Java 栈,为什么还在用 为什么不推荐 ArrayDeque 代
阅读全文
摘要:Java之transient关键字有什么用 在LinkedHashMap 类中,看到有个关键字transient,它是什么意思呢? /** * 头指针,指向第一个node */ transient LinkedHashMap.Entry<K,V> head; /** * 尾指针,指向最后一个node
阅读全文
摘要:1. 使用new 关键字 使用 new 关键字创建对象,实际上是做了两个工作,一是在内存中开辟空间,二是初始化对象。但是new 关键字只能创建非抽象对象。 Employee emp1 = new Employee(); 0: new #19 // class org/programming/mitr
阅读全文
摘要:概述 Java1.5增加了新特性:可变参数。 适用于参数个数不确定,类型确定的情况 注意: 可变参数当做数组处理。 当既有普通参数又有可变参数时,可变参数必须位于最后一项。 参数列表只能有一个可变参数 示例 public static void main(String[] args) { Syste
阅读全文
摘要:概述 TimeUnit是java.util.concurrent包下面的一个类。 TimeUnit表示给定粒度单位的持续时间,并提供跨单元转换的实用方法,以及在这些单元中执行定时和延迟操作。 TimeUnit不维护时间信息,而仅帮助组织和使用可能在各种上下文中单独维护的时间表示形式。 纳秒定义为千分
阅读全文
摘要:java中的匿名内部类总结 匿名内部类也就是没有名字的内部类 正因为没有名字,所以匿名内部类只能使用一次,它通常用来简化代码编写 但使用匿名内部类还有个前提条件:必须继承一个父类或实现一个接口 实例1:不使用匿名内部类来实现抽象方法 abstract class Person { public ab
阅读全文
摘要:问题描述 Variable used in lambda expression should be final or effectively final 我们在使用Java8 lambda表达式的时候时不时会遇到这样的编译报错 这句话的意思是,lambda 表达式中使用的变量应该是 final 或者
阅读全文
摘要:是什么 从 Java 8 引入的一个很有趣的特性是 Optional 类。Optional 类主要解决的问题是臭名昭著的空指针异常(NullPointerException)—— 每个 Java 程序员都非常了解的异常。 本质上,这是一个包含有可选值的包装类,这意味着 Optional 类既可以
阅读全文
摘要:File类 介绍 File类的一个对象,代表一个文件或一个文件目录 File类声明在java.io包下 File类中涉及关于文件或文件目录的创建、删除、重命名、修改时间、文件大小等方法,并未涉及到写入或读取文件内容的操作。如果需要读取或写入文件内容,必须使用IO流来完成。 File类的对象常会作为参
阅读全文
摘要:Java8新特性介绍 过滤集合 List<String> newList = list.stream().filter(item -> item != null).collect(Collectors.toList()); 找出并返回集合中重复的元素 ArrayList<Integer> list
阅读全文
摘要:Java集合分为Collection和Map,学习Map前需先了解Collection 集合概述&集合之Collection接口 - 至安 - 博客园 (cnblogs.com) 概述 Map元素是按照键值对形式存储的。每一对元素由两部分组成,分别叫键和值,键是唯一的,值是可以重复的。 Map与Co
阅读全文
摘要:Java1.4后新增assert关键字 Idea中开启assert断言 使用 assert boolean表达式 assert boolean表达式 : 错误提示信息 例子 public static void main(String[] args) { assert 0>1: "错误"; Syst
阅读全文
摘要:Java基础复习之:数组 简介 数组(Array):多个相同数据类型按照一定顺序排列的集合,并使用一个名字命名,通过编号的方式对这些数据进行统一管理 一维数组 一维数组的声明与初始化 int[] ids; //声明 ids[] = new int[]{1,2,3,4} //初始化 静态初始化 声明和
阅读全文
摘要:java.lang.String类 概述 public final class String implements java.io.Serializable, Comparable<String>, CharSequence { /** The value is used for character
阅读全文
摘要:List转Array toArray 首先展示初学者容易犯的错误示例 List<String> strList = new ArrayList<>(); strList.add("list-a"); strList.add("list-b"); String[] strArray = (String
阅读全文
摘要:ThreadLocal 多线程访问同一个共享变量的时候容易出现并发问题,特别是多个线程对一个变量进行写入的时候,为了保证线程安全,一般在访问共享变量的时候需要进行额外的同步措施才能保证线程安全性。ThreadLocal是除了加锁这种同步方式之外的另一种保证多线程访问时线程安全的方法,当我们在创建
阅读全文
摘要:当小数点后位数过多,多余的0没有实际意义,根据业务需求需要去掉多余的0。后端存储浮点型数据一般会用到Bigdecimal 类型,可以调用相关方法去掉小数后多余0,然后转为string。 public static void main(String[] args) { //若是String类型,也可以
阅读全文
摘要:线程之间的通信 前言 为什么要有线程通信? 多个线程并发执行时, 在默认情况下CPU是随机切换线程的,当我们需要多个线程来共同完成一件任务,当然如果我们没有使用线程通信来使用多线程共同操作同一份数据的话,虽然可以实现,但是在很大程度会造成多线程之间对同一共享变量的争夺,那样的话势必为造成很多错误
阅读全文
摘要:for for的定义,()内的三段表达式,除了中间的必须产生布尔型,并未对其余两段有所限制,只要是表达式就可以了。 //递增和递减 for(int i = 0;i < 100;i++) for (int i = 100; i > 0 ; i--) //有多表达式的 for (int i = 100,
阅读全文