在Java发展的里程碑上,有三个版本做出的改动,是革命性的

为什么说是革命性的呢?

因为这三个版本所推出的有些新机制,在之后的Java框架开发、新类的产生等等中,

都被广泛使用了。

那么,这三个版本的JDK,都有哪些新特性呢?

现在,右转哥就来带你剖析这三个版本的JDK的新特性:


首先是 JDK5:

JDK5

新特性

  1. 自动拆装箱
  2. 泛型
  3. 增强for
  4. 可变参数
  5. 枚举

那么,现在,本人就来介绍下这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版本都做出了哪些革新的更多相关文章

  1. [androd] android的在线源码网站,各个版本都有(目前已到俺android 4.2,但不包含kernel部分的代码)

    android的在线源码阅读网站,各个版本都有(目前最新版本已到android 4.2,但不包含kernel部分的代码) 这个网站最大的特点是:可以在网页上方的搜索框,搜索整个网站所存储的源码中的字符 ...

  2. 【python 下载】-各种版本都有!

    python 是一种全功能的语言,2.7很稳定,成熟的版本,且有很多开源的模块. 小编个人觉得python有一个很大的优点,就是语法简练,甚至可以说简单.比起pascal或者 C什么的,简单的难以置信 ...

  3. jar包版本冲突,并且要保留两个版本都能使用

    问题:在做项目时,遇到jar版本冲突的问题,并且老代码依赖不能用新jar包代替,要保证功能不变须要保证两个jar都能使用 思路:使用runtime 的exec 方式另启线程运行,然后返回结果 解决: ...

  4. 从java1到java9每个版本都有什么新特性?

    每次出新版本,大家大概都会这么问,"Java X会有什么特性呢?" .在下面的内容里,我总结了至今为止的Java主要发行版中各自引入的新特性,这样做的目的是为了突出各个新特性是在哪 ...

  5. pycharm 2017 序列号失效问题解决(2016-2017版本都有效)

    pycharm 序列号失效问题解决   this license BIG3CLIK6F has been cancelled  具体如下: 对,没错,这个激活码本来可以使用到2018年的,但是,忽然间 ...

  6. 疑似easyui本身bug:easyui时间控件问题,试了几个版本都不行

    最近发现easyui时间控件的值格式不支持带斜杠的日期(2016/10/31),必须是2016-10-31这类的才能正常使用,否则默认初始化为当前时间 <input id="Retur ...

  7. Maven: 每次更新Maven Project ,JAVA 版本都变为1.5

    由于Maven默认编译环境是JAVA 1.5 ,所以我们需要在pom.xml指定编译插件版本号,这样就可以保证更新Maven project版本不变. <!-- java编译插件 --> ...

  8. Docker开启远程连接,本地IDEA使用docker插件连接(不认证的版本和认证的版本都有)

    前言 在学校学习的时候,要部署一个Java程序,一般是打成war包,放到服务器上的tomcat的webapp里面去: 后来SpringBoot出现内置了tomcat,就直接打成jar包,丢到服务器任何 ...

  9. ListView去除顶部和底部边缘阴影(亲测4.4及以前的版本都适用)

    ListView滑动到顶部和底部时出现的阴影消除方法:android2.3以前用android:fadingEdge="none"android2.3以后用android:over ...

随机推荐

  1. intern()方法的使用

    intern() intern方法的作用是:如果字符串常量池中已经包含一个字符串等于此String对象的字符串,则返回常量池中的这个String对应的对象, 否则将其添加到常量池并返回常量池中的引用. ...

  2. eNSP上NAT的配置

    NAT介绍: 早在20世纪90年代初,有关RFC文档就提出了IP地址耗尽的可能性.IPv6技术的提出虽然可以从根本上解决地址短缺的问题,但是也无法立刻替换现有成熟且广泛应用的IPv4网络.既然不能 立 ...

  3. AQS源码详细解读

    AQS源码详细解读 目录 AQS源码详细解读 基础 CAS相关知识 通过标识位进行线程挂起的并发编程范式 MPSC队列的实现技巧 代码讲解 独占模式 独占模式下请求资源 独占模式下的释放资源 共享模式 ...

  4. python之目录

    一.python基础 ​ python之字符串str操作方法 ​ python之int (整型) ​ python之bool (布尔值) ​ python之str (字符型) ​ python之ran ...

  5. 一个完整的机器学习项目在Python中演练(四)

    大家往往会选择一本数据科学相关书籍或者完成一门在线课程来学习和掌握机器学习.但是,实际情况往往d是,学完之后反而并不清楚这些技术怎样才能被用在实际的项目流程中.就像你的脑海中已经有了一块块" ...

  6. 多GPU使用详解

    目录: 介绍 记录设备状态 手动分配状态 允许GPU内存增长 在多GPU系统是使用单个GPU 使用多个 GPU 一.介绍 在一个典型的系统中,有多个计算设备.在 TensorFlow 中支持的设备类型 ...

  7. 使用FME裁剪矢量shapefile文件

  8. JavaScript的URLSearchParams方法

    URLSearchParams 接口定义了一些实用的方法来处理 URL 的查询字符串. 一个实现了 URLSearchParams 的对象可以直接用在 for…of 结构中,不需要使用 entries ...

  9. MATLAB——文件读写(2)

    一.importdata函数 1. txt 如图,提取经纬度. 程序如下 clear all test=importdata('经纬度.txt'); [r,c]=size(test.data);%ro ...

  10. CDN加速小水管动态应用技巧

    不得不说现在大陆和HK的云主机都是小水管模式,由于硬件的快速发展在这种小水管的情况下很难发挥出用户硬件资源的能力,当然可以加水管但费用很高,更多时候会浪费带宽:这个时候我们想到CDN加速,这种资源的好 ...