![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java基础
文章平均质量分 62
hello_中年人
这个作者很懒,什么都没留下…
展开
-
Collectors
Collectors它是个工具类,提供了很多静态方法来返回Collector。通常作为Stream.collect()方法的入参,来实现更多的功能。API分类求平均值static <T>Collector<T,?,Double> averagingDouble(ToDoubleFunction<? super T>mapper) Returns aCollectorthat produces the arithmetic mean of...原创 2022-04-09 16:35:45 · 545 阅读 · 1 评论 -
Java8Stream流操作
熟悉了java.util.function下的各种函数式接口后,我们就可以学习下Stream流操作,它使用了各种函数式接口,下面我们来熟悉下它的API。Stream的获取static <T>Stream<T> of(T...values) Returns a sequential ordered stream whose elements are the specified values. static <T>Stream<...原创 2022-04-09 16:18:01 · 384 阅读 · 0 评论 -
Java8函数式接口
这个包下定义了许多函数式接口(这类接口只定义了唯一的抽象方法,并且这类接口使用了@FunctionalInterface进行注解),大致分为了以下四类:Function: 接收参数,并返回结果,主要方法 R apply(T t) Consumer: 接收参数,无返回结果, 主要方法为 void accept(T t) Supplier: 不接收参数,但返回结构,主要方法为 T get() Predicate: 接收参数,返回boolean值,主要方法为 boolean test(T t)再细原创 2022-04-07 16:44:26 · 668 阅读 · 0 评论 -
ResourceBundle
ResourceBundle这个类主要用来解决国际化和本地化问题。国际化和本地化可不是两个概念,两者都是一起出现的。可以说,国际化的目的就是为了实现本地化。比如对于“取消”,中文中我们使用“取消”来表示,而英文中我们使用“cancel”。若我们的程序是面向国际的(这也是软件发展的一个趋势),那么使用的人群必然是多语言环境的,实现国际化就非常有必要。而ResourceBundle可以帮助我们轻松完成这个任务:当程序需要一个特定于语言环境的资源时(如 String),程序可以从适合当前用户语言环境的资源包原创 2022-04-06 14:50:18 · 600 阅读 · 0 评论 -
Optional
程序中对"空",如空数组、空集合的体现形式可能是null或emplityList。如果是null,在使用时就需要我们进行null判断,防止抛空指针异常。常用的就是if else判断,但是如果存在多个if else 且它们之间存在着嵌套关系,代码写起来就复杂。这时候就可以使用Optonal的链式编程来解决。api介绍Modifier and Type Method and Description static <T> Optional<T> empt原创 2022-04-05 22:30:37 · 249 阅读 · 0 评论 -
Spliterator
用于遍历和分割源元素的对象。方法介绍tryAdvance// 如果存在元素,则执行Consumer并返回true并移至下一个元素。 如果没有元素返回false private static void tryAdvance() { List<String> list = new ArrayList<>(Arrays.asList("a", "b", "c")); Spliterator<String> stringSpliterator = list原创 2022-04-05 02:21:32 · 540 阅读 · 0 评论 -
Map接口Default方法
ComputeIfPresentimport java.util.HashMap;import java.util.Map;import java.util.Objects;import java.util.function.BiFunction;public class MapComputeIfPresentTest { public static void main(String[] args) { mappdingFunctionThrowException()原创 2022-04-04 15:04:48 · 803 阅读 · 0 评论 -
Comparator
package com.easypoi.stu.oneDay.collection;import java.util.Arrays;import java.util.Collections;import java.util.Comparator;import java.util.List;public class ComparatorTest { static Student s1 = new Student("Ram", 18); static Student s2 = n.原创 2022-04-01 18:38:45 · 187 阅读 · 0 评论 -
java8日期操作
public class DateTimeApiTest { public static void main(String[] args) throws InterruptedException { } private static void temporalAdjuster_AdjustInto() { LocalDateTime localDateTime = LocalDateTime.now(); // 下个月的第一天 .原创 2022-04-01 16:47:14 · 610 阅读 · 0 评论 -
Java8日期时间API
java.time.temporalTemporalAccessor框架级接口,定义对时间对象的只读访问,例如日期、时间、偏移量或它们的组合。default int get(TemporalField field)long getLong(TemporalField field)boolean isSupported(TemporalField field)default <R> R query(TemporalQuery<R> query)d..原创 2022-03-17 21:54:11 · 1806 阅读 · 0 评论 -
lombock使用及eclipse安装lombock插件
最近公司用到了lombok,感觉很不错的样子,所以上网搜了一些资料,总结了一下用法。lombok作用:它提供了简单的注解形式来帮助我们简化消除一些必须有但显得很臃肿的Java代码,特别是相对于 POJO。缺点是使用lombok虽然能够省去手动创建setter和getter方法的麻烦,但是却大大降低了源代码文件的可读性和完整性,降低了阅读源代码的舒适度。 官方下载地址:http://proje...转载 2019-06-26 09:07:27 · 1592 阅读 · 0 评论 -
二.使用volatile变量的几种模式
很多并发性专家事实上往往引导用户远离 volatile 变量,因为使用它们要比使用锁更加容易出错。然而,如果谨慎地遵循一些良好定义的模式,就能够在很多场合内安全地使用 volatile 变量。要始终牢记使用 volatile 的限制 —— 只有在状态真正独立于程序内其他内容时才能使用 volatile —— 这条规则能够避免将这些模式扩展到不安全的用例。模式 #1:状态标志也许实现 vol...转载 2019-06-14 08:48:14 · 179 阅读 · 0 评论 -
Volatitle变量和synchronized的区别及正确使用的条件
锁提供了两种主要特性:互斥(mutual exclusion)和可见性(visibility)。互斥即一次只允许一个线程持有某个特定的锁,因此可使用该特性实现对共享数据的协调访问协议,这样,一次就只有一个线程能够使用该共享数据。可见性要更加复杂一些,它必须确保释放锁之前对共享数据做出的更改对于随后获得该锁的另一个线程是可见的 —— 如果没有同步机制提供的这种可见性保证,线程看到的共享变量可能是修...转载 2019-06-14 08:23:37 · 266 阅读 · 0 评论 -
java泛型带来的变量声明冗长问题
对于 Java 5.0 中新增的泛型工具,一个常见的抱怨就是,它使代码变得太冗长。原来用一行就够的变量声明不再存在了,与声明参数化类型有关的重复非常讨厌,特别是还没有良好地支持自动补足的 IDE。例如,如果想声明一个Map,它的键是Socket,值是Future<String>,那么老方法就是:Map socketOwner = new HashMap();比新方法紧凑...原创 2019-06-13 20:26:59 · 377 阅读 · 0 评论 -
jdk7以后的字符串常量池的变化及intern方法介绍
在 JAVA 语言中有8中基本类型和一种比较特殊的类型String。这些类型为了使他们在运行过程中速度更快,更节省内存,都提供了一种常量池的概念。常量池就类似一个JAVA系统级别提供的缓存。8种基本类型的常量池都是系统协调的,String类型的常量池比较特殊。它的主要使用方法有两种:直接使用双引号声明出来的String对象会直接存储在常量池中。 如果不是用双引号声明的String对象,可...转载 2019-06-13 15:15:01 · 1055 阅读 · 1 评论