jdk8

第二十三讲 JDK8的foreach与Consumer接口、四大核心函数式接口、Stream接口、队列与栈

╄→гoц情女王★ 提交于 2019-12-09 05:27:47
导读 JDK8的foreach方法是可以直接遍历集合的,是一个新特性。 四大核心函数式接口:熟悉并会使用来解决实际开发中的项目问题。 Stream接口:处理业务接口。 队列与栈:必须要懂,因为包含了很多内存分配和处理的知识点。 一、JDK8的foreach循环: int i = 0;// 自变量 // 创建一个集合来保存自变量数据 List<Integer> list = new ArrayList<>(); // 把生成的数据添加到集合中—— list.add(++i); list.add(++i); list.add(++i); list.add(++i); // 采用JDK8的foreach增强方法来遍历—— list.forEach(cc -> System.out.println(cc)); list.forEach(System.err :: println); list.add(++i); // 把数组转换为集合并输出—— Integer[] ints = new Integer[]{}; ints = list.toArray(ints); System.out.println(Arrays.asList(ints)); 小结: 新线程 —— 根据打印顺序显示,forEach 方法开启了一个新的线程 线程异步安全 —— 因为交替打印,所以线程为异步

Java 8新特性探究(一)通往lambda之路_语法篇

怎甘沉沦 提交于 2019-12-03 16:13:16
现在开始要灌输一些概念性的东西了,这能帮助你理解lambda更加透彻一点,如果你之前听说过,也可当是温习,所谓温故而知新...... 在开始之前,可以同步下载jdk 8 和 IDE,IDE根据个人习惯了,不过eclipse官方版本还没出来,所以目前看的话,netbean7.4是首选的,毕竟前段子刚刚出的正式版本,以下是他们的下载地址。 jdk 8: https://jdk8.java.net/download.html (毕竟是国外的网站,如果下载慢,可以到我的云盘下载 http://pan.baidu.com/share/link?shareid=61064476&uk=4060588963 ) Netbeans 7.4正式版 :https://netbeans.org/downloads/ (推荐,oracle官方发布) IDEA 12 EAP http://confluence.jetbrains.net/display/IDEADEV/IDEA+12+EAP Unofficial builds of Eclipse :http://downloads.efxclipse.org/eclipse-java8/ 函数式接口 函数式接口(functional interface 也叫功能性接口,其实是同一个东西)。简单来说,函数式接口是只包含一个方法的接口

Jdk14都要出了,还不能使用 Optional优雅的处理空指针?

半城伤御伤魂 提交于 2019-12-03 13:15:20
摘自: https://www.cnblogs.com/niumoo/p/11796296.html Jdk14都要出了,还不能使用 Optional优雅的处理空指针? 1. 前言 如果你没有处理过空指针,那么你不是一位真正的 Java 程序员。 空指针确实会产生很多问题,我们经常遇到空的引用,然后又想从这个空的引用上去获取其他的值,接着理所当然的碰到了 NullPointException 。这是你可能会想,这报错很好处理,然后你看了眼报错行数,对比了下代码。脑海里瞬间闪过 ”对对对,这里有可能为空“,然后加上 null check 轻松处理。然而你不知道这已经是你处理的第多少个空指针异常了。 为了解决上面的问题,在 Java SE8 中引入了一个新类 java.util.Optional ,这个类可以 缓解 上面的问题。 你可能已经发现了,上面我用的是 缓解 而不是 解决 。这也是很多人理解不太对的地方,以为 Java SE8 中的 Optional 类可以解决空指针问题。其实 Optional 类的的使用只是 提示 你这里可能存在空值,需要特殊处理,并提供了一些特殊处理的方法。如果你把 Optional 类当作空指针的救命稻草而不加思考的使用,那么依旧会碰到错误。 因为 Optional 是的 Java SE8 中引入的,因此本文中难免会有一些 JDK8 中的语法,如

java.lang.UnsupportedClassVersionError: com/mysql/cj/jdbc/Driver : Unsupported major.minor version 52.0 (unable to load class [com.mysql.cj.jdbc.Driver])

匿名 (未验证) 提交于 2019-12-02 22:06:11
原因: com/mysql/cj/jdbc/Driver是6.0版本的驱动,兼容JDK8环境,不兼容JDK7环境,在基于jdk7的tomcat中编译运行会出错,在基于jdk8的tomcat中编译运行则不会出错。 解决方案: 1、jdk7+老版5.0驱动com/mysql/jdbc/Driver 2、jdk8+新版6.0驱动com/mysql/cj/jdbc/Driver 原因: com/mysql/cj/jdbc/Driver是6.0版本的驱动,兼容JDK8环境,不兼容JDK7环境,在基于jdk7的tomcat中编译运行会出错,在基于jdk8的tomcat中编译运行则不会出错。 解决方案: 1、jdk7+老版5.0驱动com/mysql/jdbc/Driver 2、jdk8+新版6.0驱动com/mysql/cj/jdbc/Driver 来源:博客园 作者: 锋齐叶落 链接:https://www.cnblogs.com/qianzf/p/11438589.html

JDK8中Lambda表达式底层实现浅析(一)

我的未来我决定 提交于 2019-12-01 23:10:45
1.前言 2014年十月份的时候Debug了下Lambda的实现代码, 大概了解了Lambda的实现, 昨天回忆了下, 发现以忘光, 还是写篇博客吧, 方便记忆 这篇文章是我本地Debug后记录下来的所见所闻, 不一定完全正确, 如有错误, 请务必指出. 2.环境 JDK: Oracle JDK1.8.0_05 64位 , Eclipse4.4 3.过程 初看Lambda时以为Lambda就是编译器帮我们把Lambda表达式给编译成了一个匿名内部类, 然后调用, 但是偶然间看到字节码文件后, 发现有点不同, 于是研究了下. //源码是这样的 public static void main(String[] args) throws Throwable { String hello = "hello lambda "; Function<String, Void> func = (name) -> { System.out.println(hello + name); return null; }; func.apply("haogrgr"); } //原本以为编译器会将Lambda表达式编译成这样. String hello = "hello lambda "; Function<String, Void> func = new Function<String, Void>() {

同时安装JDK6和JDK8出现的问题

安稳与你 提交于 2019-12-01 17:07:51
有时候由于项目需要,可能会需要同时使用JDK6和JDK8,这时候可能会遇到一些问题 问题一: eclipse可能打不开,这是由于eclipse默认要求JDK8,但是安装JDK6之后系统默认使用JDK6,就算你的JAVA_HOME配置的就是JDK也没用 解决方案: 找到eclipse根目录下的eclipse.ini文件 填写如下修改 问题二: 打开cmd java -version命令后出现的是jdk6的版本 解决方案: 找到C:\Windows\System32目录,将该文件夹中的java.exe,javaw.exe,javaws.exe删除,然后再次尝试查询,修改完成。 来源: https://www.cnblogs.com/wnhbx/p/11695057.html

在Ubuntu14下构建Hotspot并使用Eclipse调试

坚强是说给别人听的谎言 提交于 2019-12-01 02:17:58
偶尔会看一点点JVM代码,所以尝试构建了一把最新的OpenJDK8 1.环境介绍 1)时间: 2015-05-13 2)系统: Linux haogrgr-vm 3.16.0-30-generic #40~14.04.1-Ubuntu SMP Thu Jan 15 17:43:14 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux 3)Eclipse: Eclipse C/C++ 4.4 4)OpenJDK代码: http://hg.openjdk.java.net/jdk8u/jdk8u40 2.JDK安装 这里安装的是构建OpenJDK需要依赖的JDK, 一般是当前构建版本的上一个版本, 比如我们这里需要安装JDK7. sudo add-apt-repository ppa:webupd8team/java sudo apt-get update sudo apt-get install oracle-java7-installer sudo apt-get install oracle-java7-set-default # 如果你要安装JDK8: # sudo apt-get install oracle-java8-installer # sudo apt-get install oracle-java8-set-default #

JDK8的新特性——Lambda表达式

泪湿孤枕 提交于 2019-11-30 10:32:20
 JDK8已经发布快4年的时间了,现在来谈它的新特性显得略微的有点“不合时宜”。尽管JDK8已不再“新”,但它的重要特性之一——Lambda表达式依然是不被大部分开发者所熟练运用,甚至不被开发者所熟知。   国内的开发环境大家都知道,有各种的老项目,有各种各样的发布风险,让公司以及项目组对新的技术往往望而却步,有公司甚至时至今日还在使用JDK6来进行项目开发,这导致了在很多技术的选择上受到了很大限制,进而不能跟随时代的脚步使得项目甚至公司一步一步走向衰落。   本文简单认识JDK8的重要新特性之一——Lambda表达式。 在JDK8之前,Java是不支持函数式编程的,所谓的函数编程,即可理解是将一个函数(也称为“行为”)作为一个参数进行传递。通常我们提及得更多的是面向对象编程,面向对象编程是对数据的抽象(各种各样的POJO类),而函数式编程则是对行为的抽象(将行为作为一个参数进行传递)。在JavaScript中这是很常见的一个语法特性,但在Java中将一个函数作为参数传递这却行不通,好在JDK8的出现打破了Java的这一限制。 认识Lambda表达式    首先来引入一个示例,不知给是否有在IDEA编写代码的经历,如果在JDK8的环境下如下所示按照Java传统的语法规则编写一个线程。 1 new Thread(new Runnable() { 2 @Override 3

CentOS tomcat6 JDK8报错ClassFormatException

北城余情 提交于 2019-11-30 03:55:38
#编者注 在IDEA已经编写完毕,而且在本机运行安装JDK8,tomcat6也没有任何问题。确认提交到服务器。但是发现在运行JSP的过程中报错ClassFormatException。而其他功能都是正常的(Spring4.3.3)。百毒搜索不到。随即lantern到google。 #问题描述 ##部署环境 CentOS 5.5,使用yum安装tomcat6。并且安装JDK8。 ##开发环境 Mac10.12,JDK8,tomcat6。开发没有任何问题。 ##问题描述 在运行其他内容的时候,并没有发生异常,rest api接口运行正常。但是在其中一个简单的JSP页面当中,发生了ClassFormatException #问题原因 由于ecj.jar文件版本过低导致的。 #问题解决 下载Eclipse ECJ 下载ecj-4.6.1.jar文件(编者当时的最新版本) 关闭tomcat6服务 使用filezilla传送文件到 /usr/share/java/ 下。 删除软件链接ecj.jar rm /usr/share/java/ecj.ar 创建新版本的ecj.jar文件 ln -s /usr/share/java/ecj-4.6.1.jar /usr/share/java/ecj.jar 重启tomcat6 来源: oschina 链接: https://my.oschina.net

Java 8新特性探究 前言

偶尔善良 提交于 2019-11-29 23:28:03
自2013年6月13日,oracle就已经发布的Java 8特性完备版本(M7),但最终GA版本将在2014年3月18日(已第二次跳票,原计划今年9月发布的,据官网宣称是为了解决安全问题......),相信大家多多少少都听闻了关于Java 8的改进,总得来说,Java 8从语言,核心库,国际化、虚拟机,安全性,平台等方面一共有55个特性,本系列博文将带大家对这55个特性进行探究,不求做到最好,只求详细,深入浅出,通俗易懂。 java几个重大版本 java从1995年发布到现在,也走过18年了,个人认为,其中几个java版本都肩负着重大使命,影响甚远; jdk1.0 1995年5月23日诞生,Oak语言改名为Java,并提出“Write Once ,Run anywhere"; jdk1.2 1999年6月发布,将java划分为J2SE,J2ME,J2EE三大平台; jdk1.4 主要是性能提升,在2000年时候JAVA成为世界上最流行的电脑语言,跟这个版本离不开关系,估计国内还有大量的java应用是运行在此版本上; jdk5 诞生于2004年,他的使命就是易用,加入1. 泛型 2 自动装箱/拆箱 3 for-each 4 static import 5 变长参数等, 为了表示该版本的重要性,J2SE1.5更名为Java SE 5.0; jdk8 将在2014年3月份发布,迄今为止