自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 收藏
  • 关注

原创 枚举类的基本使用

什么是枚举类?枚举类是JDK1.5以后出现的一种新特性,枚举类可以定义一组确定的、有限的、同类型对象。如季节(春夏秋冬)、星期(周一…周日)等。枚举类的定义自定义枚举类(1.5以前)/** * 在线状态类 */class State { /** * 头像颜色 */ private final String color; public static final State ONLINE = new State("green"); publ

2020-11-09 23:28:20 162

原创 Java线程池的创建和使用

什么是线程池?线程池通俗的讲就是在程序启动时创建好若干个线程,供程序去调度和使用,当程序需要使用线程时不再需要去频繁的创建和销毁线程,而可以去线程池中获取空闲的线程直接使用,当使用完后线程进入空闲状态并非直接销毁线程。从JDK1.5开始,JAVA API的java.util.concurrent包下提供了Executors供开发人员方便的进行不同类型线程池的创建。为什么使用线程池?减小线程频繁创建和销毁对系统资源的消耗提高系统响应速度,当系统需要使用线程时直接从池中获取线程池可以根据实际情况进行

2020-11-08 22:11:43 769

原创 原子变量及CAS算法

1.i++和++i问题@Test public void test1(){ int i = 0,j,k; j = i++; k = ++j; System.out.println("i="+i+",j="+j+",k="+k); }问题分析:如上图,以i++操作为例,显然该操作是非原子性的,在底层实际上可分为...

2019-11-13 21:12:11 184

原创 内存可见性及volatile关键字

1.提出问题阅读以下代码,思考运行结果!package com.zsr.juc1;public class VolatileTest { public static void main(String[] args){ Demo d = new Demo(); new Thread(d).start(); while (true){...

2019-11-09 14:34:29 186

原创 Java8新特性(八)——时间日期API

八、时间日期API1.LocalDate 、LocalTime 、LocalDateTimeLocalDate、LocalTime、LocalDateTime 类的实例是不可变的对象,分别表示使用 ISO-8601日历系统的日期、时间、日期和时间。它们提供了简单的日期或时间,并不包含当前的时间信息。也不包含与时区相关的信息。常用方法:方法描述now()静态方法,根...

2019-11-07 22:43:30 302

原创 Java8新特性(七)——接口中的默认方法与静态方法

七、接口中的默认方法与静态方法1.接口的默认方法Java 8中允许接口中包含具有具体实现的方法,该方法称为“默认方法”,默认方法使用 default 关键字修饰。package com.zsr.interfacemethod;public interface MyInterface1{ default String fun1(){ return "接口MyI...

2019-11-07 11:47:38 196

原创 Java8新特性(六)——Optional 类

六、Optional 类1.介绍Optional 类(java.util.Optional) 是一个容器类,代表一个值存在或不存在,原来用 null 表示一个值不存在,现在 Optional 可以更好的表达这个概念。并且可以避免空指针异常。2.常用方法方法描述Optional.of(T t)创建一个 Optional 实例Optional.empty()创建一...

2019-11-07 10:58:39 113

原创 Java8新特性(五)——串并行流及Fork/Join框架

五、串并行流及Fork/Join框架1.串行、并行和并发串行:执行多个任务时,各个任务按照顺序执行,执行完一个才执行下一个。并行:执行多个任务时,各个任务可以同时执行(多核CPU)。并发:执行多个任务时,各个任务被不同线程执行(单核CPU),本质上是线程抢占到时间片后执行任务,并不是同时执行多个任务。2.思考问题当我们需要执行一个数据量庞大的任务时,我们可以将任务分割成许多较小的任...

2019-11-06 23:25:08 379

原创 Java8新特性(四)——Stream API

四、Stream API1.什么是Stream?在Java8中新添加的Stream API(java.util.stream.*)可以提高程序员的生产力,让程序员写出更高效、简洁的代码。它将要操作的元素集合生成一种流,流在管道中传输,并且可以通过对流的一系列操作最终得到我们预期的处理结果。需要注意的是:Stream流并不会储存元素对Sream流的操作并不会改变源对象Stream是延迟...

2019-11-05 16:02:11 238

原创 Java8新特性(三)——方法引用与构造器引用

三、方法引用与构造器引用1.方法引用若Lambda体中的内容有方法已经实现了,我们可以使用“方法引用”(可以理解为方法应用Lambda表达式的另一种表达形式),使用操作符 “ ::” 将方法名和对象或类的名字分隔开来。主要有三种语法格式:对象::实例方法名 (System.out::println) public void test1(){ PrintStream ...

2019-11-05 14:02:59 145

原创 Java8新特性(二)——函数式接口

二、函数式接口1.思考问题在使用Lambda表达式时,我们使用匿名函数的方式作为参数进行传递,如对员工按工资进行筛选,实际上是将 接口MyPredicate的test(T t) 方法进行了实现,如下:参见Java8新特性(一)——Lambda表达式public interface MyPredicate<T> { boolean test(T t);}public...

2019-10-31 22:11:25 200 1

原创 Java8新特性(一)——Lambda表达式

一、Lambda表达式1.为什么要使用Lambda表达式?Lambda 是一个 匿名函数,我们可以把 Lambda表达式理解为是 一段可以传递的代码(将代码像数据一样进行传递)。可以写出更简洁、更灵活的代码。作为一种更紧凑的代码风格,使Java的语言表达能力得到了提升。现有需求:筛选出员工中年龄大于35岁的员工,我们该怎么做呢?直接上代码普通方式:对集合进行遍历,按照条件筛选,返回满足条...

2019-10-31 16:45:48 121

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除