`

jdk新特性(转自http://yyys8517750.iteye.com/blog/1174874)

    博客分类:
  • Java
 
阅读更多

JDK1.5”(开发代号猛虎)的一个重要主题就是通过新增一些特性来简化开发,这些特性包括泛型,for-each 循环,自动装包/拆包,枚举,可变参数, 静态导入 。使用这些特性有助于我们编写更加清晰,精悍,安全的代码。

下面我们简单介绍一下这些新特性。
1.泛型(Generic)
C++通过模板技术可以指定集合的元素类型,而Java在1.5之前一直没有相对应的功能。一个集合可以放任何类型的对象,相应地从集合里面拿对象的时候我们也不得不对他们进行强制得类型转换。猛虎引入了泛型,它允许指定集合里元素的类型,这样你可以得到强类型在编译时刻进行类型检查的好处。
Collection<String> c = new ArrayList();
c.add(new Date());
编译器会给出一个错误,
add(java.lang.String) in java.util.Collection<java.lang.String> cannot be applied to (java.util.Date)

 


2.For-Each循环
For-Each循环得加入简化了集合的遍历。假设我们要遍历一个集合对其中的元素进行一些处理。典型的代码为:
void processAll(Collection c){
    for(Iterator i=c.iterator(); i.hasNext();){
        MyClass myObject = (MyClass)i.next();
        myObject.process();
    }
}
使用For-Each循环,我们可以把代码改写成,
void processAll(Collection<MyClass> c){
    for (MyClass  myObject :c)
        myObject.process();
}
这段代码要比上面清晰许多,并且避免了强制类型转换。


3.自动装包/拆包(Autoboxing/unboxing)
自动装包/拆包大大方便了基本类型数据和它们包装类地使用。
自动装包:基本类型自动转为包装类.(int >> Integer)
自动拆包:包装类自动转为基本类型.(Integer >> int)
在JDK1.5之前,我们总是对集合不能存放基本类型而耿耿于怀,现在自动转换机制解决了我们的问题。
int a = 3;
Collection c = new ArrayList();
c.add(a);//自动转换成Integer.

Integer b = new Integer(2);
c.add(b + 2);
这里Integer先自动转换为int进行加法运算,然后int再次转换为Integer.


4.枚举(Enums)
JDK1.5加入了一个全新类型的“类”-枚举类型。为此JDK1.5引入了一个新关键字enmu. 我们可以这样来定义一个枚举类型。
 
public enum Color
{
   Red,
   White,
   Blue
}
然后可以这样来使用Color myColor = Color.Red.
枚举类型还提供了两个有用的静态方法values()和valueOf(). 我们可以很方便地使用它们,例如
for (Color c : Color.values())
            System.out.println(c);

5.可变参数(Varargs)
可变参数使程序员可以声明一个接受可变数目参数的方法。注意,可变参数必须是函数声明中的最后一个参数。假设我们要写一个简单的方法打印一些对象,
util.write(obj1);
util.write(obj1,obj2);
util.write(obj1,obj2,obj3);

在JDK1.5之前,我们可以用重载来实现,但是这样就需要写很多的重载函数,显得不是很有效。如果使用可变参数的话我们只需要一个函数就行了
public void write(Object... objs) {
   for (Object obj: objs)
      System.out.println(obj);
}
在引入可变参数以后,Java的反射包也更加方便使用了。对于c.getMethod("test", new Object[0]).invoke(c.newInstance(), new Object[0])),
现在我们可以这样写了c.getMethod("test").invoke(c.newInstance()),这样的代码比原来清楚了很多。


6.静态导入(Static Imports)
要使用用静态成员(方法和变量)我们必须给出提供这个方法的类。使用静态导入可以使被导入类的所有静态变量和静态方法在当前类直接可见,使用这些静态成员无需再给出他们的类名。
import static java.lang.Math.*;
…….
r = sin(PI * 2); //无需再写r = Math.sin(Math.PI);
不过,过度使用这个特性也会一定程度上降低代码地可读性

分享到:
评论

相关推荐

    jsf-ri.jar from https://javaserverfaces.dev.java.net/

    https://javaserverfaces.dev.java.net/ mojarra-1.2._11_b0_FCS JDK 1.5 绝对能用 good luck

    https://pan.baidu.com/s/1EpXyBLFpxaIiuTBh0XJiGw

    包含jdk8 及 jdk9 2个版本。 java8的特点:1.速度更快(修改了HasMap、HasSet、CurrentHasMap等存储结构);2.代码更少(增加了新的语法Lambda表达式);3.强大的Stream API;4.便于并行;5.最大化减少空指针异常。 ...

    centos安装jdk1.8时出现没有/lib/ld-linux.so.2:这个文件的原因分析

    -bash: /usr/local/jdk/jdk1.8.0_181/bin/java: /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory 安装完后 java -version 查看版本出现: 原因是:没有那个文件或目录,找了很久发现需要...

    linux快速安装jdk1.8方式及环境变量配置

    linux快速安装jdk1.8方式及环境配置 一、下载jdk jdk下载地址:https://www.oracle.com/java/technologies/javase-jdk8-downloads.html **注:安装之前先查看一下系统有没有已经安装的版本 查看当前系统jdk的版本:...

    成绩管理系统

    开发环境:jdk7+tomcat7+eclipse+mysql 使用技术:spring MVC+hibernate+spring+easyui Jdk(最好使用jdk7):http://pan.baidu.com/s/1gd8APVl Tomcat(最好使用tomcat7): http://pan.baidu.com/s/1gd8APVl Mysql...

    ext4.js 打包 最新文件

    需要JDK1.6 或 JDK1.7,测试用1.8也能正常运行,注意这点即可。 1.2Sencha安装 路径:D:\Sencha,安装后目录如下图: 1.3Ruby1.93安装 安装ruby 1.9.3 高版本,不适用这个senchaCmd版本 ...

    Jdk8下载(附:官网下载地址)

    JDK8是Java的一个重要版本,它引入了许多新特性,对开发者来说具有里程碑式的意义。 在Java 8中,主要的更新和改进包括: 1. **lambda表达式**:这是Java 8最具代表性的特性之一,它允许开发者以更简洁的方式处理...

    jdk11官网下载 linux+windows

    JDK11是Java的一个重要版本,它在2018年9月发布,带来了许多新特性、改进和优化。在本篇文章中,我们将深入探讨JDK11在Linux和Windows平台上的下载、安装与使用。 一、JDK11的下载 官方下载链接位于&lt;https://...

    jdk1.8.0_241.tar.gz

    由于官方下载jdk现在需登录 找到第三方jdk 用作备份 来源 http://enos.itcollege.ee/~jpoial/allalaadimised/jdk8/ 此外 华为jdk镜像地址 https://repo.huaweicloud.com/java/jdk/

    jeecms9.2源代码文件

    Jdk 7.0 下载址: http://java.sun.com/javase/downloads/index.jsp Tomcat7 下载地址:https://tomcat.apache.org/download-70.cgi MySQL 5.0.22 下载地址:http://dev.mysql.com/downloads/mysql/5.0.html#win32...

    jdk8 解压缩安装包下载地址https://www.oracle.com/java/technologies/download

    **Java Development Kit (JDK) 8 是Oracle提供的用于开发和运行Java应用程序的重要工具包。在本篇中,我们将深入探讨JDK8的下载、安装以及解决Linux环境下可能遇到的问题。** 首先,JDK8是Java编程语言的核心组成...

    Java帮助文档 JDK全系列 官方中英下载地址.docx

    - JDK 1.5(也称为Java 5):提供了泛型、枚举、注解等新特性。下载链接:...

    jsp2.0 应用教程 光盘

    JDK 5.0 update 6和JDK 6.0 beta Tomcat 5.5.12 MySQL 5.0.16 (3)本书涉及的共享软件或免费软件的链接地址如下。 JDK: http://java.sun.com Tomcat: http://tomcat.apache.org/download-55.cgi MySQL: ...

    大学生毕设+基于SpringMVC带GUI界面+学生成绩管理系统(毕设论文+前后端源码+数据库+环境搭建步骤)

    开发环境:jdk7+tomcat7+eclipse+mysql 使用技术:spring MVC+hibernate+spring+easyui Jdk(最好使用jdk7):http://pan.baidu.com/s/1gd8APVl Tomcat(最好使用tomcat7): http://pan.baidu.com/s/1gd8APVl Mysql...

    解决-BASH: /HOME/JAVA/JDK1.8.0_221/BIN/JAVA: 权限不够问题

    1)进入存放jdk文件的文件夹路径 我这里是 usr/local/jdk/ 2)输入命令 chmod 777 jdk1.8.0_221/bin/java修改权限 3)再次输入 java -version 成功 总结 以上所述是小编给大家介绍的解决-BASH: /HOME/JAVA/JDK1.8.0...

    搭建本地服务器https://start.spring.io/

    使用idea Spring Initializr 创建spring boot项目爆无法访问https://start.spring.io/时,将这文档解压,并用解压后附带的指令运行jar包,将https://start.spring.io/换为120.0.0.1:...(注意,确保jdk版本不低于1.8)

    jsp+ssm+mysql实现的校园二手市场交易平台源码.zip

    本项目是基于java开发的前端项目。 jdk1.8 tomcat7 mysql5.7 环境搭建教程:http://programmer.ischoolbar.com/index.php/article/article/id/169.html

    JSONObject必包的Jar包及json生成的简单案例

    json-lib-2.4-jdk15.jar http://sourceforge.net/projects/json-lib/files/json-lib/json-lib-2.4/ 下载地址:http://nchc.dl.sourceforge.net/project/json-lib/json-lib/json-lib-2.4/json-lib-2.4-jdk15.jar 第...

    安装JDK ,TOMCAT

    在IT行业中,Java开发是广泛使用的编程语言,而JDK(Java Development Kit)是开发和运行Java应用程序必不可少的工具集。TOMCAT则是一个流行的Java Servlet容器,常用于部署Web应用。本文将深入探讨如何安装JDK和...

    RedHat Enterprise Linux 5下安装JDK 详细出处参考:http://www.itqun.net/content-detail/21404

    在Red Hat Enterprise Linux 5(RHEL 5)操作系统中安装Java Development Kit(JDK)是许多开发人员和系统管理员必须进行的一项基本任务。JDK是Java编程语言的核心组件,包含了编译、调试和运行Java应用程序所需的...

Global site tag (gtag.js) - Google Analytics