论JDK5/7/8版本都做出了哪些革新
在Java发展的里程碑上,有三个版本做出的改动,是革命性的
为什么说是革命性的呢?
因为这三个版本所推出的有些新机制,在之后的Java框架开发、新类的产生等等中,
都被广泛使用了。
那么,这三个版本的JDK,都有哪些新特性呢?
现在,右转哥就来带你剖析这三个版本的JDK的新特性:
首先是 JDK5:
JDK5
新特性:
- 自动拆装箱
- 泛型
- 增强for
- 可变参数
- 枚举
那么,现在,本人就来介绍下这5个新特性:
首先是 自动拆装箱:
自动拆装箱:
关于这个知识点,请观看本人博文 —— 《详解 泛型 与 自动拆装箱》
泛型:
关于这个知识点,请观看本人博文 —— 《详解 泛型 与 自动拆装箱》
增强for:
什么是增强for呢?
可能有的同学知道这种格式以及使用,但是不知道名词。
那么,现在,本人就来通过一段代码解释下这个名词:
package edu.youzg.about_new_features.core.about_jdk5.core;
import java.util.ArrayList;
import java.util.List;
public class Test {
public static void main(String[] args) {
List<Integer> list = new ArrayList<>();
list.add(5);
list.add(4);
list.add(9);
list.add(9);
list.add(4);
for (Integer integer : list) {
System.out.println(integer);
}
}
}
那么,本人来展示下运行结果:

看到上面的代码的同学,估计惊讶到嘴都合不拢了吧。
没错,正是这种格式的for循环:
for(集合存储的类或其父类类型 对象 : 集合)
那么,现在,本人再来介绍下可变参数:
可变参数:
至于可变参数,我们可能自己编写程序时还没用到过
但是,在我们学习反射机制的时候,用过JDK中的提供的方法的可变参数。
那么,现在,本人就来展示下可变参数的使用:
package edu.youzg.about_new_features.core.about_jdk5.core;
public class Test {
public static void main(String[] args) {
show();
show("你好");
show("我很阔奈", "清亏窝全");
}
static void show(String...arg) {
for (int i = 0; i < arg.length; i++) {
System.out.println(arg[i]);
}
}
}
那么,本人来展示下运行结果:

枚举:
请观看本人博文 —— 《详解 枚举》
那么,现在,本人来介绍下JDK7的新特性:
JDK7
新特性:
- 其它进制字面量
- 数字字面量可以出现下划线
- switch 语句可以用字符串
- 泛型简化
那么,现在,本人就来介绍下这4个新特性:
其它进制字面量:
在我们学习编程语言之前,我们就了解一个知识点 —— 进制转换问题:
有关进制转换问题,请观看本人博文 —— 《进制 概述》
那时候可能有同学在想:
在Java中都学了这么久了,还没见过其它进制,这个知识点不就没用了吗?
并不是的,我们用流传输的数据,所生成的字节码文件等等,
都是以其它进制存储的数据。
那么,在JDK7之后,Java支持其它进制的字面量了。
但是,本人要提醒一点:
print之类的方法,默认会将其他进制的数转化为相应的十进制数,再输出
现在,本人来提供一段代码来展示下:
package edu.youzg.about_new_features.core.about_jdk7.core;
public class Test {
public static void main(String[] args) {
//JDK1.7 支持不同进制的写法
/* 0b/0B开头,就是二进制 */
System.out.println(0b100);
/* 0开头,就是八进制 */
System.out.println(0100);
/*1~9开头,就是十进制 */
System.out.println(100);
/* 0x/0X开头,就是十六进制 */
System.out.println(0x100);
}
}
那么,本人现在来展示下运行结果:

数字字面量可以出现下划线:
Java为了增强对数值的阅读性,JDK7提供了'_'对数据分隔。
但是,本人要说明几点问题:
说明:
- 不能出现在进制标识和数值之间
- 不能出现在数值开头和结尾
- 不能出现在小数点旁边
那么,本人来通过一段代码来展示下:
package edu.youzg.about_new_features.core.about_jdk7.core;
public class Test {
public static void main(String[] args) {
//JDK1.7 支持位数分隔符
int num = 10_0000_0000;
System.out.println(num);
}
}
现在,本人来展示下运行结果:

可以看到,我们所加的分隔符,并没有对数据本身产生影响,
但是增强了数据的可读性。
switch 语句可以用字符串:
本人直接来上代码展示这个特性:
package edu.youzg.about_new_features.core.about_jdk7.core;
public class Test {
public static void main(String[] args) {
String str = "清亏窝全";
switch (str) {
case "清亏窝全":
System.out.println("你阔奈
论JDK5/7/8版本都做出了哪些革新的更多相关文章
- [androd] android的在线源码网站,各个版本都有(目前已到俺android 4.2,但不包含kernel部分的代码)
android的在线源码阅读网站,各个版本都有(目前最新版本已到android 4.2,但不包含kernel部分的代码) 这个网站最大的特点是:可以在网页上方的搜索框,搜索整个网站所存储的源码中的字符 ...
- 【python 下载】-各种版本都有!
python 是一种全功能的语言,2.7很稳定,成熟的版本,且有很多开源的模块. 小编个人觉得python有一个很大的优点,就是语法简练,甚至可以说简单.比起pascal或者 C什么的,简单的难以置信 ...
- jar包版本冲突,并且要保留两个版本都能使用
问题:在做项目时,遇到jar版本冲突的问题,并且老代码依赖不能用新jar包代替,要保证功能不变须要保证两个jar都能使用 思路:使用runtime 的exec 方式另启线程运行,然后返回结果 解决: ...
- 从java1到java9每个版本都有什么新特性?
每次出新版本,大家大概都会这么问,"Java X会有什么特性呢?" .在下面的内容里,我总结了至今为止的Java主要发行版中各自引入的新特性,这样做的目的是为了突出各个新特性是在哪 ...
- pycharm 2017 序列号失效问题解决(2016-2017版本都有效)
pycharm 序列号失效问题解决 this license BIG3CLIK6F has been cancelled 具体如下: 对,没错,这个激活码本来可以使用到2018年的,但是,忽然间 ...
- 疑似easyui本身bug:easyui时间控件问题,试了几个版本都不行
最近发现easyui时间控件的值格式不支持带斜杠的日期(2016/10/31),必须是2016-10-31这类的才能正常使用,否则默认初始化为当前时间 <input id="Retur ...
- Maven: 每次更新Maven Project ,JAVA 版本都变为1.5
由于Maven默认编译环境是JAVA 1.5 ,所以我们需要在pom.xml指定编译插件版本号,这样就可以保证更新Maven project版本不变. <!-- java编译插件 --> ...
- Docker开启远程连接,本地IDEA使用docker插件连接(不认证的版本和认证的版本都有)
前言 在学校学习的时候,要部署一个Java程序,一般是打成war包,放到服务器上的tomcat的webapp里面去: 后来SpringBoot出现内置了tomcat,就直接打成jar包,丢到服务器任何 ...
- ListView去除顶部和底部边缘阴影(亲测4.4及以前的版本都适用)
ListView滑动到顶部和底部时出现的阴影消除方法:android2.3以前用android:fadingEdge="none"android2.3以后用android:over ...
随机推荐
- Building Applications with Force.com and VisualForce(Dev401)(十四):Implementing Business Processes:Auditing Processes
Dev401-015:Implementing Business Processes:Auditing Processes Module Objectives1.list some of the fe ...
- Springcloud zuul 实现API 网关
1,https://github.com/Netflix/zuul zuul 网关文档 2,什么是网关 网关就是客户端进行访问的时候,先经过网关服务器,再由网关服务器进行转发到真实的服务器.类似于Ng ...
- Thread -- Volatile
1,可见性也就是说一旦某个线程修改了该被volatile修饰的变量,它会保证修改的值会立即被更新到主存,当有其他线程需要读取时,可以立即获取修改之后的值. 在Java中为了加快程序的运行效率,对一些变 ...
- 看完这篇 Session、Cookie、Token,和面试官扯皮就没问题了
Cookie 和 Session HTTP 协议是一种无状态协议,即每次服务端接收到客户端的请求时,都是一个全新的请求,服务器并不知道客户端的历史请求记录:Session 和 Cookie 的主要目的 ...
- 图解JVM类加载机制和双亲委派模型
我们都知道以 .java 结尾的 Java 源文件,经过编译之后会变成 .class 结尾的字节码文件.JVM 通过类加载器来加载字节码文件,然后再执行程序. 什么时候加载一个类 那么,什么时候类加载 ...
- 读者来信 | 刚搭完HBase集群,Phoenix一启动,HBase就全崩了,是什么原因?(已解决)
前言:之前有朋友加好友与我探讨一些问题,我觉得这些问题倒挺有价值的:于是就想在本公众号开设一个问答专栏,方便技术交流与分享,专栏名就定为:<读者来信>.如遇到本人能力有限难以解决的问题,我 ...
- 关于dll劫持我的奇思妙想(一)
0x00 前言 前段时间在研究着windows底层的一些东西,发现这个dll劫持一直没有做过,根据倾旋师傅的视频和文章做了一系列的研究,然后就突发来了兴致研究一些dll劫持提权. 0x01 了解 ...
- 2019NYIST计科第四次周赛
YZJ的牛肉干 Description 今年的ACM暑期集训队一共有18人,分为6支队伍.其中有一个叫做 YZJ的大佬,在共同的集训生活中,大家建立了深厚的友谊, YZJ准备做点什么来纪念这段激情燃烧 ...
- Vertica的这些事(二)——SQL-Server、Oracle、MySQL和Vertica数据库常用函数对比
SQL Server.Oracle.MySQL和Vertica数据库常用函数对比 Vertica数据库是HP公司新收购的用于BI方面的数据库. 绝对值 S:select abs(-1) value O ...
- 《Three.js 入门指南》0 - 说明
本笔记,摘自:<Three.js 入门指南>一书 地址链接为:https://www.ituring.com.cn/book/miniarticle/58552 本书的前言摘录: 本书结构 ...