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

为什么说是革命性的呢?

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

都被广泛使用了。

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

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


首先是 JDK5:

JDK5

新特性

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

那么,现在,本人就来介绍下这5个新特性:

首先是 自动拆装箱

自动拆装箱:

关于这个知识点,请观看本人博文 —— 《详解 泛型 与 自动拆装箱》


泛型:

关于这个知识点,请观看本人博文 —— 《详解 泛型 与 自动拆装箱》


增强for:

什么是增强for呢?

可能有的同学知道这种格式以及使用,但是不知道名词。

那么,现在,本人就来通过一段代码解释下这个名词:

  1. package edu.youzg.about_new_features.core.about_jdk5.core;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. public class Test {
  5. public static void main(String[] args) {
  6. List<Integer> list = new ArrayList<>();
  7. list.add(5);
  8. list.add(4);
  9. list.add(9);
  10. list.add(9);
  11. list.add(4);
  12. for (Integer integer : list) {
  13. System.out.println(integer);
  14. }
  15. }
  16. }

那么,本人来展示下运行结果

看到上面的代码的同学,估计惊讶到嘴都合不拢了吧。

没错,正是这种格式的for循环:

for(集合存储的类或其父类类型 对象 : 集合)


那么,现在,本人再来介绍下可变参数

可变参数:

至于可变参数,我们可能自己编写程序时还没用到过

但是,在我们学习反射机制的时候,用过JDK中的提供的方法的可变参数。

那么,现在,本人就来展示下可变参数的使用:

  1. package edu.youzg.about_new_features.core.about_jdk5.core;
  2. public class Test {
  3. public static void main(String[] args) {
  4. show();
  5. show("你好");
  6. show("我很阔奈", "清亏窝全");
  7. }
  8. static void show(String...arg) {
  9. for (int i = 0; i < arg.length; i++) {
  10. System.out.println(arg[i]);
  11. }
  12. }
  13. }

那么,本人来展示下运行结果


枚举:

请观看本人博文 —— 《详解 枚举》


那么,现在,本人来介绍下JDK7的新特性

JDK7

新特性

  • 其它进制字面量
  • 数字字面量可以出现下划线
  • switch 语句可以用字符串
  • 泛型简化

那么,现在,本人就来介绍下这4个新特性:

其它进制字面量:

在我们学习编程语言之前,我们就了解一个知识点 —— 进制转换问题:

有关进制转换问题,请观看本人博文 —— 《进制 概述》

那时候可能有同学在想:

在Java中都学了这么久了,还没见过其它进制,这个知识点不就没用了吗?

并不是的,我们用流传输的数据,所生成的字节码文件等等,

都是以其它进制存储的数据。

那么,在JDK7之后,Java支持其它进制的字面量了。

但是,本人要提醒一点:

print之类的方法,默认会将其他进制的数转化为相应的十进制数,再输出

现在,本人来提供一段代码来展示下:

  1. package edu.youzg.about_new_features.core.about_jdk7.core;
  2. public class Test {
  3. public static void main(String[] args) {
  4. //JDK1.7 支持不同进制的写法
  5. /* 0b/0B开头,就是二进制 */
  6. System.out.println(0b100);
  7. /* 0开头,就是八进制 */
  8. System.out.println(0100);
  9. /*1~9开头,就是十进制 */
  10. System.out.println(100);
  11. /* 0x/0X开头,就是十六进制 */
  12. System.out.println(0x100);
  13. }
  14. }

那么,本人现在来展示下运行结果


数字字面量可以出现下划线:

Java为了增强对数值的阅读性,JDK7提供了'_'对数据分隔。

但是,本人要说明几点问题:

说明

  • 不能出现在进制标识数值之间
  • 不能出现在数值开头结尾
  • 不能出现在小数点旁边

那么,本人来通过一段代码来展示下:

  1. package edu.youzg.about_new_features.core.about_jdk7.core;
  2. public class Test {
  3. public static void main(String[] args) {
  4. //JDK1.7 支持位数分隔符
  5. int num = 10_0000_0000;
  6. System.out.println(num);
  7. }
  8. }

现在,本人来展示下运行结果



可以看到,我们所加的分隔符,并没有对数据本身产生影响,

但是增强了数据的可读性。


switch 语句可以用字符串:

本人直接来上代码展示这个特性:

  1. package edu.youzg.about_new_features.core.about_jdk7.core;
  2. public class Test {
  3. public static void main(String[] args) {
  4. String str = "清亏窝全";
  5. switch (str) {
  6. case "清亏窝全":
  7. System.out.println("你阔奈
  8. 论JDK5/7/8版本都做出了哪些革新的更多相关文章

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

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

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

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

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

      1. 疑似easyui本身bug:easyui时间控件问题,试了几个版本都不行
      1. 最近发现easyui时间控件的值格式不支持带斜杠的日期(2016/10/31),必须是2016-10-31这类的才能正常使用,否则默认初始化为当前时间 <input id="Retur ...

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

      1. Docker开启远程连接,本地IDEA使用docker插件连接(不认证的版本和认证的版本都有)
      1. 前言 在学校学习的时候,要部署一个Java程序,一般是打成war包,放到服务器上的tomcatwebapp里面去: 后来SpringBoot出现内置了tomcat,就直接打成jar包,丢到服务器任何 ...

      1. ListView去除顶部和底部边缘阴影(亲测4.4及以前的版本都适用)
      1. ListView滑动到顶部和底部时出现的阴影消除方法:android2.3以前用android:fadingEdge="none"android2.3以后用android:over ...

    1. 随机推荐

        1. php解析配置文件
        1. php解析配置文件 标签(空格分隔): php .ini格式 ![](https://img2020.cnblogs.com/blog/1458583/202003/1458583-202003301 ...

        1. JavaScript 模式》读书笔记(5)— 对象创建模式1
        1. 这又是一个新的开始,对象的重要性不言而喻.在JavaScript中创建对象是十分容易的,之前聊过的对象字面量和构造函数都可以达到目的.但是本篇中,我们越过那些方法,以寻求一些额外的对象创建模式. 本篇 ...

        1. C 实战练习题目1
        1. 题目:有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 程序分析:可填在百位.十位.个位的数字都是1.2.3.4.组成所有的排列后再去 掉不满足条件的排列. 实例: #in ...

        1. Tensorflow系列专题(四):神经网络篇之前馈神经网络综述
        1. 目录: 神经网络前言 神经网络 感知机模型 多层神经网络 激活函数 Logistic函数 Tanh函数 ReLu函数 损失函数和输出单元 损失函数的选择 均方误差损失函数 交叉熵损失函数 输出单元的选 ...

        1. iOS 编译过程原理(2)
        1. 一.前言 <iOS编译过程的原理和应用>文章介绍了 iOS 编译相关基础知识和简单应用,但也很有多问题都没有解释清楚: Clang LLVM 究竟是什么 源文件到机器码的细节 Link ...

        1. spring bean的装载过程简略赏析
        1. spring一个bean的容器,它从这个最基本的功能进而扩展出AOP,transaction,cache,schedule,data等等,将业务与框架代码解耦,让我们可以将大部分精力投入到业务代码中, ...

        1. ASP.NET Core单文件和多文件上传并保存到服务端
        1. 前言: 在我们日常开发中,关于图片,视频,音频,文档等相关文件上传并保存到服务端中是非常常见的一个功能,今天主要是把自己在开发中常用的两种方式记录下来方便一下直接使用,并且希望能够帮助到有需要的同学! ...

        1. [洛谷1437&Codevs1257]敲砖块<恶心的dp>
        1. 题目链接:https://www.luogu.org/problem/show?pid=1437#sub http://codevs.cn/problem/1257/ 不得不说,这个题非常的恶心,在初 ...

        1. Python循环语句,对象
        1. Python循环语句,对象 案例1:斐波那契数列 案例2:模拟cp操作 案例3:生成8位随机密码 1 案例1:斐波那契数列 1.1 问题 编写fib.py脚本,主要要求如下: 输出具有10个数字的斐波 ...

        1. 适用于小白的 python 快速入门教程
        1. 文章更新于:2020-02-17 按照惯例,需要的文件附上链接放在文首 文件名:python-3.7.6-amd64.exe 文件大小:25.6 M 下载链接:https://www.lanzous. ...