在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. OpenCV -Python 性能衡量和提升技术 | 十二

    目标 在图像处理中,由于每秒要处理大量操作,因此必须使代码不仅提供正确的解决方案,而且还必须以最快的方式提供.因此,在本章中,你将学习 衡量代码的性能. 一些提高代码性能的技巧. 你将看到以下功能:c ...

  2. C 2010年笔试题

    1 有一个函数, 写一段程序,输入的值,输出的值. #include <stdio.h> void main() { int x,y; printf("输入x:"); ...

  3. SpringCloud入门(九): Zuul 上传&回退&异常处理&跨域

    Zuul的上传 1.构建一个上传类 import org.springframework.web.bind.annotation.PostMapping; import org.springframe ...

  4. 批量生成sql语句,难得

    在工作我们常常要批量生成sql文件,因为业务部门经常给我们的是excel文件,根据我的经验,推荐两种批量生成sql文件方式 1.excel批量生成sql ,sql语句如下 INSERT INTO Ta ...

  5. bootstrip CSS

    什么是网格(Grid)? 摘自维基百科: 在平面设计中,网格是一种由一系列用于组织内容的相交的直线(垂直的.水平的)组成的结构(通常是二维的).它广泛应用于打印设计中的设计布局和内容结构.在网页设计中 ...

  6. 手动搭建I/O网络通信框架1:Socket和ServerSocket入门实战,实现单聊

    资料:慕课网 第二章:手动搭建I/O网络通信框架2:Socket和ServerSocket入门实战,实现单聊 这个基础项目会作为BIO.NIO.AIO的一个前提,后面会有数篇博客会基于这个小项目利用B ...

  7. P3381 【模板】最小费用最大流 题解

    CSDN同步 原题链接 前置知识: 从三种算法剖析网络流本质 简要题意: 给定网络图,求图的最大流,以及流量为最大流时的最小费用. 现在假设你们看了那篇网络流博客之后,所有人都会了 \(\text{E ...

  8. Linux基础:Day02

    Linux文件管理 创建 touch vim/vi echo重定向 touch 管理:atime mtime ctime touch 文件名  //如果文件不存在就创建文件 touch -a -t [ ...

  9. Vulnhub homeless靶机渗透

    信息搜集 nmap -sP 192.168.146.6 nmap -A -Pn 192.168.146.151 直接访问web服务. 大概浏览一下没发现什么,直接扫描下目录把dirb+bp. BP具体 ...

  10. 细数Java项目中用过的配置文件(YAML篇)

    灵魂拷问:YAML,在项目中用过没?它与 properties 文件啥区别? 目前 SpringBoot.SpringCloud.Docker 等各大项目.各大组件,在使用过程中几乎都能看到 YAML ...