1.自动包装和解包(Autoboxing and unboxing)
代码示例
往一个ArrayList中加入一个整数,1.5版本以前的版本写法是:
List list = new ArrayList();
list.add( new Integer( 10 ) );
而在1.5版本中可以写为:
list.add( 10 );
因为,在1.5版本中,对一个整数进行包装,使之成为一个Integer对象(即包装,boxing),然后加入到一个ArrayList中的做法被认 为是没有必要的,反之,解包(unboxing)的做法也是没有必要的,这样的代码只是增加了程序的文本长度而已,所以1.5版本支持了自动包装和解包操 作,对于bool/Boolean,byte/Byte,double/Double,short/Short,int/Integer,long /Long,float/Float的相应包装/解包操作都进行了支持,从而使代码变得简单。
2.更优化的循环语句(The inhanced for loop)
代码示例
一个典型的遍历数组的循环语句,1.5版本以前的写法是:
for ( Iterator iterator = list.iterator(); iterator.hasNext(); )
{
Integer n = (Integer)iterator.next();
...
}//for
而在1.5版本中可以写为:
for ( Integer n : list )
{
...
}//for
显然1.5版本的写法比以前是大大简化了,但是在需要修改集合,比如删除其中元素时不能采用这种写法。之所以Java1.5版本没有象C#那样干脆定义一个foreach关键词,主要是因为SUN认为增加一个专门的关键词成本太高了(too costly)。但1.4版本中就曾经增加了assert关键词,1.5版本中也新增加了enum关键词,因此这一解释恐怕并不那么令人信服。
3.参数可变的方法和printf
代码示例
当不能确定一个方法的入口参数的个数时,以往版本的Java中,通常的做法是将多个参数放在一个数组或者对象集合中作为参数来传递,1.5版本以前的写法是:
int sum(Integer[] numbers)
{
int nSum = 0;
for(int i: numbers)
nSum += i;
return nSum;
}
...
//在别处调用该方法
sum(new Integer[] {12,13,20});
而在1.5版本中可以写为:
int sum(Integer... numbers)
{
int nSum = 0;
for(int i: numbers)
nSum += i;
return nSum;
}
...
//在别处调用该方法
sum(12,13,20);
显然,1.5版本的写法更为简易,也更为直观,尤其是方法的调用语句,不仅简化很多,而且更符合通常的思维方式,更易于理解。
1.5版本自身就有一个应用该特征的典型例子,即C风格的格式化输出方法——printf。
代码示例
输出一个加法算式,1.5版本以前的写法是:
int x = 5;
int y = 7;
int nSum = x + y;
System.out.println(x + " + " + y + " = " + nSum);
而在1.5版本中可以写为:
System.out.printf("%d + %d = %d/n", x, y, nSum);
以上两种写法的输出结构是一样的,即“5 + 7 = 12”。
这种改变不仅仅是形式上的,printf还可以提供更为灵活、强大的输出功能,比如限定按照两位整数的形式输出,可以写为 “System.out.printf("%02d + %02d = %02d/n", x, y, nSum);”,输出结果将是“05 + 07 = 12”。
4.枚举
代码示例
构建一个表示色彩的枚举,并赋值,在1.5版本中可以写为:
public enum MyColor{ Red, Yellow, Blue }
MyColor color = MyColor.Red;
for ( MyColor mycolor : MyColor.values() )
System.out.println( mycolor );
以往的Java版本中没有enum关键词,1.5版本中终于加入了进来,这确实是一个令人高兴的改进。此外,enum还提供了一个名为values() 的静态方法,用以返回枚举的所有值的集合。所以,以上程序的输出结果是把“Red”、“Yellow”、“Blue”分行输出。
而enum提供的静态方法valueOf()则将以字符串的形式返回某一个具体枚举元素的值,比如“MyColor.valueOf(“Red”)”会返 回“Color.Red”。静态方法name()则返回某一个具体枚举元素的名字,比如“MyColor.Red.name()”会返回“Red”。类似 的方法还有不少。此外,enum自身还可以有构造方法。
5.静态引用
代码示例
当我们要获取一个随即数时,1.5版本以前的写法是:
import java.lang.Math; //程序开头处
...
double x = Math.random();
而在1.5版本中可以写为:
import static java.lang.Math.random; //程序开头处
…
double x = random();
静态引用使我们可以象调用本地方法一样调用一个引入的方法,当我们需要引入同一个类的多个方法时,只需写为“import static java.lang.Math.*”即可。这样的引用方式对于枚举也同样有效。
6.总结
以上对J2SE1.5的部分新特征做了一些简单的介绍。总而言之,1.5版本的Java确实给我们带来了很多令人激动的变革,如同以上介绍的那样,很多功能以前的版本也能实现,但是不能实现得这样简单、漂亮。相信这次变革会给Java带来更多的追随者。
- 浏览: 467167 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (371)
- Java (44)
- Flex (25)
- Design Pattern / UML (5)
- JVM (14)
- Software Engineer (4)
- Testing (30)
- Web Backend (60)
- Linux (7)
- Database (11)
- SOA (28)
- English (6)
- FX (5)
- SAP Support (25)
- SAP Development (5)
- SAP Impl & Oprn (8)
- Articles (15)
- Music (4)
- Recipe (14)
- Multi-thread (4)
- Lucene (2)
- CS basic / Algorithm (12)
- Tour (3)
- C C++ (21)
- Others (10)
- Code Repository C++ (1)
- Code Repository Java (1)
- Code Repository Algorithm (1)
- Code Repository SQL (1)
- Web Frontend (4)
最新评论
-
xiangxm:
Java 强引用、 软引用、 弱引用、虚引用 -
nml-lyb:
123
Mule 的第一个例子 -
nml-lyb:
http://www.baidu.com
Mule 的第一个例子 -
white___ant:
...
Java 强引用、 软引用、 弱引用、虚引用 -
joeyon:
...
Java NIO介绍
发表评论
-
java8 Stream Lazy 解释 (非实现原理)
2015-07-22 07:49 1582http://blog.csdn.net/dm_vincen ... -
java8 系列2 深入理解Java 8 Lambda(类库篇——Streams API,Collectors和并行)
2015-07-22 07:00 2481http://zh.lucida.me/blog/java ... -
java8 系列1 深入理解Java 8 Lambda(语言篇——lambda,方法引用,目标类型和默认方法)
2015-07-22 06:58 1067http://zh.lucida.me/blog/java- ... -
Java 8 Stream探秘 具体实现
2015-07-22 06:31 896http://colobu.com/2014/11/18/J ... -
Arrays.asList() 的了解
2015-07-21 23:05 1161为什么Arrays.asList() 返回的list是 i ... -
java8 Lambda expressions
2015-07-14 13:09 873The single most important chan ... -
java8 new features
2015-07-08 02:06 698http://www.javacodegeeks.com/2 ... -
ReentrantLock与synchronized
2014-09-02 23:34 548http://uule.iteye.com/blog/148 ... -
PriorityQueue的使用
2014-05-29 12:14 957http://blog.csdn.net/yangzhon ... -
java的移位操作详解,左移和右移 << >>, 补码计算
2014-04-17 10:28 805---------------------补码--- ... -
深入Java集合学习系列:ArrayList的实现原理
2014-02-13 09:04 564http://zhangshixi.iteye.com/bl ... -
java集合类 ------------ 实现 细节
2014-02-12 23:12 530深入Java集合学习系列:ArrayList的 ... -
两种简单的方式快速实现hashCode 和 equals方法
2014-02-04 10:46 645http://hi.baidu.com/coolcat_p ... -
集合类 Set
2013-12-30 03:50 502http://www.cnblogs.com/yuchao ... -
正则表达式30分钟入门教程
2013-10-22 00:21 541http://blog.csdn.net/cumt168/a ... -
总结Java方法(函数)传值和传引用的问题
2013-09-16 08:38 614http://java.chinaitlab.com/bas ... -
有状态,无状态对象是什么概念
2013-06-21 06:00 1116http://blog.csdn.net/showwair/ ... -
Dom4j的使用(全而好的文章)
2013-06-09 21:12 539http://xhy0422.iteye.com/blog/ ... -
serialVersionUID 用来表明类的不同版本间的兼容性
2013-06-03 23:12 813http://blog.csdn.net/hulefei29 ... -
java集合类
2013-01-25 10:47 718http://blog.csdn.net/softwave ...
相关推荐
JAVA 1.5的新特性是Java发展史上的一个重要里程碑,这一版本引入了一系列创新特性,旨在提升编程效率、增强代码安全性并简化开发流程。以下是对JAVA 1.5新特性的详细解析: ### 1. 泛型 (Generics) #### 概述 泛型...
java1.5新特性 枚举 问我文字大于20个字没问题吧?我曰:没问题,然后我凑了20个字~
Java 1.5 引入的新特性之一就是对枚举(Enumerated Types)的支持,这是对之前版本的一个重大改进,以解决从 C++ 等语言转到 Java 的程序员所抱怨的问题。在 Java 1.5 之前,虽然可以通过定义 `public static final`...
Java 1.5 引入的新特性之一就是枚举(Enum)类型,这是对之前版本的一个重大改进,尤其是在从 C++ 等语言过渡到 Java 的开发者中受到了广泛关注。在 Java 1.5 之前,Java 缺乏对枚举类型的原生支持,导致了一些不便...
类型安全的枚举是在 Java 1.5 中引入的另一种新特性,它为枚举类型提供了更好的类型安全性和灵活性。类型安全的枚举不仅避免了使用常量接口所带来的问题,还允许为枚举类型定义方法。 **示例对比:** 传统方式下,...
//这里就是自动的装箱,将3转换成Integer类型并放到集合中自动拆箱包装类自动转为基本类型 Integer >> int面试常见题目:自动拆箱与自动装箱的问
JDK1.5新特性
这个版本引入了大量的新特性、优化和改进,对Java编程语言有着深远的影响。让我们详细了解一下Java 1.5的主要知识点。 1. **泛型(Generics)** 泛型是Java 1.5最重要的特性之一,允许在类、接口和方法中使用类型...
JDK 1.5的发布标志着Java平台的一次重大进步,通过引入一系列新特性,不仅增强了语言本身的表达能力,还提高了开发者的生产力。泛型、枚举、注解等特性至今仍是Java开发中不可或缺的重要组成部分。此外,JDK 1.5还对...
这个API文档以中文的形式提供,使得国内开发者能更方便地理解和使用Java 1.5的新特性。 在Java 1.5版本中,引入了许多重要的新特性和改进,对Java编程语言产生了深远的影响。以下是一些关键知识点: 1. **泛型...
在这个"最新JAVA1.5中文API"中,开发者可以找到全面的文档,帮助理解并利用这些新特性进行编程。 首先,让我们来探讨一些Java 1.5中的关键更新: 1. **泛型(Generics)**:这是Java 1.5最显著的变化之一,允许在...
Java 1.5,也被称为Java SE 5.0,是Java发展历程中的一个重要版本,它引入了许多新特性和改进,极大地提升了编程效率和代码的可读性。以下是对这些新特性的详细解释: 1. **静态导入(Static Import)** 静态导入...
以上是Java 1.5 API中的一些核心特性。`aybook.cn_javzwapjc1230.chm`可能是包含Java 1.5 API文档的CHM(Microsoft Compiled HTML Help)文件,这种格式通常用于存放离线帮助文档。`更多电子书下载.html`可能指向...
Java 1.5 是一个重要的版本更新,引入了许多新特性,极大地提升了开发效率和代码质量。以下是对这些新特性的详细解释: 1. **自动装箱与拆箱**: 自动装箱是指将基本数据类型(如 int、char 等)自动转换为对应的...
Java 1.5 API,也被称为Java SE 5.0(Java Standard Edition 5.0),是Java发展历程中的一个重要里程碑,引入了许多新特性和改进,为开发者提供了更强大的工具和功能。JavaScript API虽然在此描述中一同提及,但它们...
1.增强的for循环【foreach{}迭代数组或集合】 格式:for(变量的类型 变量名:集合变量名 ){} 注意:集合变量可以是数组或实现了... 格式:import static java.lang.Math.* 注意:这时候的导入就需要加类名了