JDK8新特性PPT课件
- 格式:ppt
- 大小:418.50 KB
- 文档页数:31
•课程介绍与预备知识•基础语法与程序结构•面向对象编程基础目•常用类库与工具使用•图形用户界面开发录•网络编程与数据库连接•多线程编程技术•设计模式与架构思想目•课程总结与展望录Java语言概述及发展历程Java语言的起源与特点01Java的发展历程02Java的应用领域03编程环境搭建与工具选择JDK的安装与配置开发工具的选择Maven的使用编写HelloWorld 程序带领学员编写并运行第一个Java 程序,了解Java 程序的基本结构。
程序解析详细讲解HelloWorld 程序的每一行代码,让学员了解Java 程序的执行流程。
常见问题与解决方法针对初学者在编写和运行Java 程序时可能遇到的问题,提供解决方案。
第一个Java 程序示例030201介绍Java 中的基本数据类型(如int 、float 、char 等)和引用数据类型(如类、接口等)。
Java 中的数据类型变量的声明与赋值运算符的使用类型转换讲解如何在Java 中声明变量、为变量赋值以及变量的作用域。
介绍Java 中的算术运算符、关系运算符、逻辑运算符等,以及运算符的优先级和结合性。
详细讲解Java 中的自动类型转换和强制类型转换,以及转换过程中可能遇到的问题。
数据类型、变量和运算符根据特定条件执行不同代码块。
if 条件语句根据表达式的值选择执行多个代码块中的一个。
switch 语句简洁的if-else 结构,用于条件判断并返回结果。
三目运算符分支结构循环结构for循环while循环do-while循环一维数组存储表格形式数据,可通过多个下标访问元素。
多维数组数组排序数组查找01020403在数组中查找指定元素,并返回其下标或位置信息。
存储相同类型数据的线性结构,可通过下标访问元素。
使用排序算法对数组元素进行排序,如冒泡排序、选择排序等。
数组及其应用方法定义指定方法名、参数列表和返回类型,编写方法体实现特定功能。
方法调用通过方法名和参数列表调用已定义的方法,执行其功能并获取返回值。
Java版本:JDK8的⼗⼤新特性介绍JDK8常⽤包及概述java.applet 提供了需要创建⼀个⼩程序和⽤来跟其他⼩程序交流上下⽂的类。
Java.awt 包含⽤于创建⽤户界⾯和绘制图形图像的所有类Java.io 提供与输⼊输出相关的类Java.beans 包含与开发javaBeans相关的类ng 提供java语⾔程序设计的基础类 提供实现⽹络操作相关的类Java.nio 为输⼊输出提供缓冲区的类Java.text 提供处理⽂本、⽇期、数字和消息的类和接⼝Java.util 提供处理⽇期、时间、随机数⽣成等各种使⽤⼯具的类 提供⽤于⽹络应⽤程序的类、⽹络应⽤扩展类Java.swing 提供⼀组与AWT功能相同的纯java的组件类java.sql 该包提供了使⽤Java语⾔访问并处理存储在数据源(通常是⼀个关系型数据库)中的数据API。
java.RMI 该包提供远程⽅法调⽤相关APIJDK8新特性:mbda表达式2.新的⽇期API3.引⼊Optional4.使⽤Base645.接⼝的默认⽅法和静态⽅法6.新增⽅法引⽤格式7.新增Stream类8.注解相关的改变9.⽀持并⾏(parallel)数组10.对并发类(Concurrency)的扩展。
⼀、Lambda表达式Lambda 表达式也可称为闭包,是推动Java 8 发布的最重要新特性。
lambda表达式本质上是⼀个匿名⽅法。
Lambda允许把函数作为⼀个⽅法的参数(函数作为参数传递进⽅法中)或者把代码看成数据。
使⽤Lambda 表达式可以使代码变的更加简洁紧凑。
在最简单的形式中,⼀个lambda可以由:⽤逗号分隔的参数列表、–>符号、函数体三部分表⽰,在某些情况下lambda的函数体会更加复杂,这时可以把函数体放到在⼀对花括号中,就像在Java中定义普通函数⼀样。
Lambda可以引⽤类的成员变量与局部变量(如果这些变量不是final的话,它们会被隐含的转为final,这样效率更⾼)。
JDK8新特性去重对象中重复的字段问题当下互联⽹技术成熟,越来越多的趋向去中⼼化、分布式、流计算,使得很多以前在数据库侧做的事情放到了Java端。
今天有⼈问道,如果数据库字段没有索引,那么应该如何根据该字段去重?⼤家都⼀致认为⽤Java来做,但怎么做呢?解答忽然想起以前写过list去重的⽂章,找出来⼀看。
做法就是将list中对象的hashcode和equals⽅法重写,然后丢到HashSet⾥,然后取出来。
这是最初刚学Java的时候像被字典⼀样背写出来的答案。
就⽐如⾯试,⾯过号称做了3年Java的⼈,问Set和HashMap的区别可以背出来,问如何实现就不知道了。
也就是说,初学者只背特性。
但真正在项⽬中使⽤的时候你需要确保⼀下是不是真的这样。
因为背书没⽤,只能相信结果。
你需要知道HashSet如何帮我做到去重了。
换个思路,不⽤HashSet可以去重吗?最简单,最直接的办法不就是每次都拿着和历史数据⽐较,都不相同则插⼊队尾。
⽽HashSet只是加速了这个过程⽽已。
⾸先,给出我们要排序的对象User@Data@Builder@AllArgsConstructorpublic class User {private Integer id;private String name;}List<User> users = Lists.newArrayList(new User(1, "a"),new User(1, "b"),new User(2, "b"),new User(1, "a"));⽬标是取出id不重复的user,为了防⽌扯⽪,给个规则,只要任意取出id唯⼀的数据即可,不⽤拘泥id相同时算哪个。
⽤最直观的办法这个办法就是⽤⼀个空list存放遍历后的数据。
@Testpublic void dis1() {List<User> result = new LinkedList<>();for (User user : users) {boolean b = result.stream().anyMatch(u -> u.getId().equals(user.getId()));if (!b) {result.add(user);}}System.out.println(result);}⽤HashSet背过特性的都知道HashSet可以去重,那么是如何去重的呢?再深⼊⼀点的背过根据hashcode和equals⽅法。