java5.0的新特性总结

我把java5.0产生的新特性总结一下,方便其他java爱好者的学习了解

java5.0中,主要的新特性主要包括1、泛型 2、增强的for循环3、自动装箱和自动拆箱4、类型安全的枚举 5、可变长度参数 6、静态引入 7、元数据(注解)8、C风格的格式化输出。

1、泛型,Java的泛型虽然跟C++的泛型看上去十分相似,但其实有着相当大的区别,有些细节的东西也相当复杂(至少很多地方会跟我们的直觉背道而驰)。可以这样说,泛型的引入在很大程度上增加了Java语言的复杂度,对初学者尤其是个挑战。

举例:ArrayList<Integer> aList = new ArrayList<Integer>();     aList.add(new Integer(1));  

首先在<>中定义integer类型,表示ArrayList集合中不会接受除integer外的类型,这样传给ArrayList的数据如果是其他类型,就会报错,从而让错误出现在调试阶段,方便程序员调试程序

2、增强for循环, 格式如:for (Object obj : c) 


        System.out.println((String) obj);     

}

具体的语法:使用":"分隔开,前面的部分写明从数组或Collection中将要取出的类型,以及使用的临时变量的名字,后面的部分写上数组或者Collection的引用,这样可以简化我们的书写。

3、自动装箱和拆箱,装箱,就是把值类型用它们相对应的引用类型包起来,使它们可以具有对象的特质,如我们可以把int型包装成Integer类的对象,或者把double包装成Double,等等。拆箱,就是跟装箱的方向相反,将Integer及Double这样的引用类型的对象重新简化为值类型的数据。java5.0之前的版本,我们需要手动将数据类型装箱和拆箱,java5.0后,java虚拟机在系统底层自动调用相应的方法,帮我们将数据装箱和拆箱。

举例:public static void manualBoxingUnboxing(int i) { 
    ArrayList<Integer> aList = new ArrayList<Integer>();     

aList.add(0, new Integer(i));    

  int a = aList.get(0).intValue(); 
    System.out.println("The value of i is " + a); 

}   
public static void autoBoxingUnboxing(int i) { 
    ArrayList<Integer> aList = new ArrayList<Integer>();    

 aList.add(0, i); 
         int a = aList.get(0); 
    System.out.println("The value of i is " + a); 

4、在张孝祥老师的视频中提到java本来是没有枚举的,但是使用Java的广大开发者对于枚举的需求并没有因为Java本身没有提供而消失,所以java在5.0版本中向C学习,引进枚举。

举例:public enum Language {CHINESE, ENGLISH, FRENCH, HUNGARIAN}

5、可变长度参数,在方法的参数列表中,我们可以定义可变长度的参数,用“...”表示,但是只能存在参数列表的最后一个参数。

举例:public String testVararg(String... args) {     

StringBuilder sb = new StringBuilder();    

 for (String str : args) {         sb.append(str);     } 
     return sb.toString(); 

}

6、静态引入,静态引入就是指引入某个类的静态字段,如import static java.lang.Math.PI;

这样,就不需要程序员手动的输入类名.方法名,只需要写方法名就可以了,但是如果多个类中定义相同的静态方法时,引用方法必须指明引用的是哪个类中的方法。

7、元数据(注解),注解不会直接影响程序的语义,而开发和部署工具则可以读取这些注解信息,并作相应处理,如生成额外的Java源代码、XML文档、或者其他将与包含注解的程序一起使用的物件。java5.0之前,我们靠反射来实现注解的功能,现在有了注解,可以大大减少代码。java5.0中主要的注解有@Override,这个注解被使用在方法上,表明这个方法是从其父类继承下来的,@Deprecated,表明该项(类、字段、方法)过时,不再被推荐使用。@SuppressWarnings,表明该项(类、字段、方法)所涵盖的范围不需要显示所有的警告信息。

8、C风格的格式化输出,Java有类似C的printf()风格的方法,方法名同样叫作printf(),这一特性依赖于前边提到的可变长度参数。举个例子来说,我们现在可以写: System.out.printf("%s has a value of %d.%n", someString, a);

 

注:下文中的 *** 代表文件名中的版本号。 # 【jna-***.jar中文文档.zip】 中包含: 中文文档:【jna-***-javadoc-API文档-中文(简体)版.zip】 jar包下载地址:【jna-***.jar下载地址(官方地址+国内镜像地址).txt】 Maven依赖:【jna-***.jar Maven依赖信息(可用于项目pom.xml).txt】 Gradle依赖:【jna-***.jar Gradle依赖信息(可用于项目build.gradle).txt】 源代码下载地址:【jna-***-sources.jar下载地址(官方地址+国内镜像地址).txt】 # 本文件关键字: jna-***.jar中文文档.zip,java,jna-***.jar,net.java.dev.jna,jna,***,com.sun.jna,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压 【jna-***.jar中文文档.zip】,再解压其中的 【jna-***-javadoc-API文档-中文(简体)版.zip】,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件; # Maven依赖: ``` <dependency> <groupId>net.java.dev.jna</groupId> <artifactId>jna</artifactId> <version>***</version> </dependency> ``` # Gradle依赖: ``` Gradle: implementation group: 'net.java.dev.jna', name: 'jna', version: '***' Gradle (Short): implementation 'net.java.dev.jna:jna:***' Gradle (Kotlin): implementation("net.java.dev.jna:jna:***") ``` # 含有的 Java package(包)(此处仅列举3个): ``` com.sun.jna com.sun.jna.internal com.sun.jna.platform ...... ``` # 含有的 Java class(类)(此处仅列举3个): ``` com.sun.jna.AltCallingConvention com.sun.jna.Callback com.sun.jna.Callback.UncaughtExceptionHandler ...... ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值