在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("你阔奈

最新文章

  1. TaskScheduler一个.NET版任务调度器
  2. CSV表格读取
  3. C#邮件发送问题(二)
  4. 隐马尔可夫模型(Hidden Markov Model,HMM)
  5. ACM: 继续畅通工程-并查集-最小生成树-解题报告
  6. There was an internal API error.
  7. jenkins2 pipeline高级
  8. Comet技术详解:基于HTTP长连接的Web端实时通信技术
  9. 分区格式化mkfs
  10. C# 返回json结果集,js日期格式化
  11. git 取消/添加 某文件的跟踪
  12. C(m,n)%P
  13. jenkins tags
  14. spring mvc获取路径参数的几种方式 - 浅夏的个人空间 - 开源中国社区
  15. 老李分享:jvm内存原型剖析
  16. Eclipse配置tomcat程序发布到哪里去了?
  17. Algorithm --&gt; 快速排序
  18. js 声明提升
  19. 2、Android构建本地单元测试
  20. css块级元素和行内元素详细解析

热门文章

  1. 李宏毅老师机器学习课程笔记_ML Lecture 2: Where does the error come from?
  2. Oracle数据库开机自启动的配置
  3. OpenCV-Python 图像金字塔 | 二十
  4. PyTorch ImageNet 基于预训练六大常用图片分类模型的实战
  5. 3.介绍ASP.NET Core框架
  6. Crash
  7. CSS3新增的选择器
  8. 并发——抽象队列同步器AQS的实现原理
  9. SpringBoot 入门:项目属性配置
  10. ASP.NET Core WEB API 使用element-ui文件上传组件el-upload执行手动文件文件,并在文件上传后清空文件