上课要求jdk版本1.8.0而我的版本是jdk11,有啥区别
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了上课要求jdk版本1.8.0而我的版本是jdk11,有啥区别相关的知识,希望对你有一定的参考价值。
上面对对象课程,要求课下配置自己的电脑。
jdk版本迭代都是根据上一代进行增添新功能。djk11在1.8版本上只是添加了少许新内容以适应现在互联网du技术节奏,除了新添加的内容,两者没有什么影响。也就是,如果不用到新添加的内容,运行不受影响。但是需要知道,有哪些内容是新的。
JDK1.8的新特性:
一、接口的默认方法Java 8允许我们给接口添加一个非抽象的方法实现,只需要使用 default关键字即可,这个特征又叫做扩展方法。
二、Lambda 表达式在Java 8 中你就没必要使用这种传统的匿名对象的方式了,Java 8提供了更简洁的语法,lambda表达式:
Collections.sort(names, (String a, String b) -> return b.compareTo(a););
三、函数式接口Lambda表达式是如何在java的类型系统中表示的,每一个lambda表达式都对应一个类型,通常是接口类型。
而“函数式接口”是指仅仅只包含一个抽象方法的接口,每一个该类型的lambda表达式都会被匹配到这个抽象方法。因为默认方法不算抽象方法,所以也可以函数式接口添加默认方法。
四、方法与构造函数引用Java 8 允许你使用 :: 关键字来传递方法或者构造函数引用,上面的代码展示了如何引用一个静态方法,我们也可以引用一个对象的方法:
converter = something::startsWith;
String converted = converter.convert("Java");
System.out.println(converted);
五、Lambda 作用域在lambda表达式中访问外层作用域和老版本的匿名对象中的方式很相似。你可以直接访问标记了final的外层局部变量,或者实例的字段以及静态变量。
六、访问局部变量可以直接在lambda表达式中访问外层的局部变量:
七、访问对象字段与静态变量 和本地变量不同的是,lambda内部对于实例的字段以及静态变量是即可读又可写。该行为和匿名对象是一致的:
八、访问接口的默认方法JDK 1.8 API包含了很多内建的函数式接口,在老Java中常用到的比如Comparator或者Runnable接口,这些接口都增加了@FunctionalInterface注解以便能用在lambda上。
Java 8 API同样还提供了很多全新的函数式接口来让工作更加方便,有一些接口是来自Google Guava库里的,即便你对这些很熟悉了,还是有必要看看这些是如何扩展到lambda上使用的。
扩展资料:
jdk11新特性:
1、字符串加强
// 判断字符串是否为空白" ".isBlank(); // true// 去除首尾空格" Javastack ".strip(); // "Javastack"// 去除尾部空格 " Javastack ".stripTrailing()。
// 去除首部空格 " Javastack ".stripLeading(); // "Javastack "// 复制字符串"Java".repeat(3); // "JavaJavaJava"// 行数统计"A\\nB\\nC".lines().count(); // 3
2、HttClient Api
这是 Java 9 开始引入的一个处理 HTTP 请求的的孵化 HTTP Client API,该 API 支持同步和异步,而在 Java 11 中已经为正式可用状态,你可以在java.net包中找到这个 Api
3、用于 Lambda 参数的局部变量语法
用于 Lambda 参数的局部变量语法简单来说就是支持类型推导:
var x = new A();for (var x : xs) ... try (var x = ...) ... catch ...
4、ZGC
从JDK 9开始,JDK使用G1作为默认的垃圾回收器。G1可以说是GC的一个里程碑,G1之前的GC回收,还是基于固定的内存区域,而G1采用了一种“细粒度”的内存管理策略,不在固定的区分内存区域属于surviors、eden、old。
而我们不需要再去对于年轻代使用一种回收策略,老年代使用一种回收策略,取而代之的是一种整体的内存回收策略。
这种回收策略在我们当下cpu、内存、服务规模都越来越大的情况下提供了更好的表现,而这一代ZGC更是有了突破性的进步。
从原理上来理解,ZGC可以看做是G1之上更细粒度的内存管理策略。由于内存的不断分配回收会产生大量的内存碎片空间,因此需要整理策略防止内存空间碎片化。
在整理期间需要将对于内存引用的线程逻辑暂停,这个过程被称为"Stop the world"。只有当整理完成后,线程逻辑才可以继续运行。
jdk版本迭代都是根据上一代进行增添新功能。djk11在1.8版本上只是添加了少许新内容以适应现在互联网du技术节奏,除了新添加的内容,两者没有什么影响。
也就是,如果不用到新添加的内容,运行不受影响。但是需要知道,有哪些内容是新的。
JDK1.8的新特性:
一、接口的默认方法Java 8允许我们给接口添加一个非抽象的方法实现,只需要使用 default关键字即可,这个特征又叫做扩展方法。
二、Lambda 表达式在Java 8 中你就没必要使用这种传统的匿名对象的方式了,Java 8提供了更简洁的语法,lambda表达式:Collections.sort(names, (String a, String b) -> returnb.compareTo(a);)。
三、函数式接口Lambda表达式是如何在java的类型系统中表示的,每一个lambda表达式都对应一个类型,通常是接口类型。而“函数式接口”是指仅仅只包含一个抽象方法的接口,每一个该类型的lambda表达式都会被匹配到这个抽象方法。因为默认方法不算抽象方法,所以也可以函数式接口添加默认方法。
四、方法与构造函数引用Java 8 允许你使用关键字来传递方法或者构造函数引用,上面的代码展示了如何引用一个静态方法,我们也可以引用一个对象的方法。
converter = something::startsWith。
String converted = converter.convert("Java")。
System.out.println(converted)。
五、Lambda 作用域在lambda表达式中访问外层作用域和老版本的匿名对象中的方式很相似。你可以直接访问标记了final的外层局部变量,或者实例的字段以及静态变量。
JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。
以上内容参考:百度百科-jdk
参考技术Bjdk版本迭代都是根据上一代进行增添新功能。djk11在1.8版本上只是添加了少许新内容以适应现在互联网du技术节奏,除了新添加的内容,两者没有什么影响。
也就是,如果不用到新添加的内容,运行不受影响。但是需要知道,有哪些内容是新的。
JDK1.8的新特性:
一、接口的默认方法Java 8允许我们给接口添加一个非抽象的方法实现,只需要使用 default关键字即可,这个特征又叫做扩展方法。
二、Lambda 表达式在Java 8 中你就没必要使用这种传统的匿名对象的方式了,Java 8提供了更简洁的语法,lambda表达式:Collections.sort(names, (String a, String b) -> returnb.compareTo(a);)。
三、函数式接口Lambda表达式是如何在java的类型系统中表示的,每一个lambda表达式都对应一个类型,通常是接口类型。而“函数式接口”是指仅仅只包含一个抽象方法的接口,每一个该类型的lambda表达式都会被匹配到这个抽象方法。因为默认方法不算抽象方法,所以也可以函数式接口添加默认方法。
四、方法与构造函数引用Java 8 允许你使用关键字来传递方法或者构造函数引用,上面的代码展示了如何引用一个静态方法,我们也可以引用一个对象的方法。
converter = something::startsWith。
String converted = converter.convert("Java")。
System.out.println(converted)。
五、Lambda 作用域在lambda表达式中访问外层作用域和老版本的匿名对象中的方式很相似。你可以直接访问标记了final的外层局部变量,或者实例的字段以及静态变量。
JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。
参考技术C 区别并不是很大,djk11在1.8版本上只是添加了少许新内容以适应现在互联网技术节奏,除了新添加的内容,两者没有什么影响。也就是,如果你不用到新添加的内容,运行不受影响。但是你需要知道,有哪些内容是新的。 参考技术D 一般的学校上课1.8.0就够使用了,要是不确定就下载两个,到时候改下环境变量就可以切换版本了下载好想用的jdk版本,然后修改环境变量就可以修改你用的jdk版本了,话句话说将你的配置的环境变量JAVA_HOME 中的路径改成你想用的jdk路径就可以修改你的jdk版本了本回答被提问者采纳
Java切换JDK版本时遇到的小错误。
最近学习loadrunner,学习到java vuser地方,因为LR11只支持JDK 1.6版本(且必须为32位),而我本地用的是JDK1.7版本,所以就想把JDK从1.7切换成1.6。于是开始重新配置环境变量,将JAVA_HOME从1.7指向1.6,但是奇怪的事情发生了,配置完成后,显示的依然是1.7的版本,百思不得其解,好吧百度一下:最后得知原因:因为在C:\\windows\\System32下,还有java.exe,这个java.exe依然是1.7的,要想变为1.6的,必须将PATH里的JAVA_HOME\\bin目录放到第一位:即
set path=.;%JAVA_HOME%\\bin;%SystemRoot%\\system32;%SystemRoot%;%SystemRoot%\\System32\\Wbem;%SYSTEMROOT%\\System32\\WindowsPowerShell\\v1.0\\;C:\\strawberry\\c\\bin;C:\\strawberry\\perl\\bin;D:\\Androidsdk\\AndroidSDK\\sdk\\platform-tools;D:\\Androidsdk\\AndroidSDK\\sdk\\tools;C:\\Program Files\\TortoiseSVN\\bin;C:\\plugins\\Tesseract-OCR;C:\\Python27;C:\\Python27\\Scripts;E:\\maven\\bin;C:\\Program Files\\SUNINFO\\ETSClient;D:\\Program Files\\SUNINFO\\ETSClient;C:\\Program Files\\OpenVPN\\bin;%APPIUM_HOME%
再次CMD下运行java-version
JDK版本成功切换到1.6.
总结起来记录这个事情对我有两个帮助:
1、LR支持的JDK版本为1.6
2、切换JDK版本时必须将新的JDK的bin目录放在path环境变量的首位才可以覆盖原来的JDK版本。
以上是关于上课要求jdk版本1.8.0而我的版本是jdk11,有啥区别的主要内容,如果未能解决你的问题,请参考以下文章
我的电脑安装jdk11版本显示不兼容,但是我们老师要求我们使用最新版的,怎么办?