CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2SE / 基础类

转一篇好文——20分钟摸清猛虎脾气--JDK1.5新特性简介,也欢迎大家讨论

楼主titaninwinter(梦里花落)2004-09-02 14:42:39 在 Java / J2SE / 基础类 提问

刚开始接触jdk1.5那些新特性时,不由惊叹“jdk1.5,Are   you   crazy?”,不知有没有朋友和我有同样的感受,这里先转一篇看到的文章,对刚接触1.5的同志们应该是有好处的:)  
   
  =======================================================================  
  JDK1.5新特性简介-请大家继续补充    
  常年在海区潜水,也出来给大家做点小贡献。这两天闲着无聊,试了一把JDK1.5。觉得挺好使的,就把它们贴出来一下,希望能为那些正想学习1.5的XDJM节省个几分钟学习时间。如果还有什么遗漏,请大家继续补充。  
   
  “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);  
  不过,过度使用这个特性也会一定程度上降低代码地可读性。  
   
  目前我所知道的就这些,欢迎大家继续补充。  
   
  JDK1.5   正式版即将发布,让我们共同期待吧。我们可以去http://java.sun.com/j2se/1.5.0/download.jsp,先下载一个beta爽一把。  
  问题点数:0、回复次数:8Top

1 楼Drowning(悠長假期~~)回复于 2004-09-02 15:12:19 得分 0

收藏之Top

2 楼sunlang(曹操不罗嗦,一心要拿荆州)回复于 2004-09-02 15:21:30 得分 0

3QTop

3 楼xch28(①日蚀)回复于 2004-09-02 15:28:34 得分 0

呵呵,java和.net互相借鉴Top

4 楼flyoversky(碧海)回复于 2004-09-02 15:37:21 得分 0

好贴Top

5 楼realfish(沸溪)回复于 2004-09-02 15:38:58 得分 0

markTop

6 楼gyang(我是谁?)回复于 2004-09-02 15:42:55 得分 0

我倒觉得这些功能不好,增加了java的复杂性.Top

7 楼titaninwinter(梦里花落)回复于 2004-09-02 16:07:10 得分 0

实际上我的感觉很多还是:无他,唯手熟尔。  
  像for-each循环、自动装包拆包等,用惯了就好了:),  
  继续摸索Top

8 楼lzmailcn(一年前的新手)回复于 2004-10-18 11:13:46 得分 0

好同志,辛苦了!Top

相关问题

  • ListView,有脾气.
  • jdk
  • Java的脾气也不是那么好摸的!
  • 最近发觉自己的脾气越来越差了~~
  • 个人问题,请教如何改善自己的脾气?
  • 今天去面试间公司,那主管脾气特臭!
  • 〓 〓一个没有公主脾气、大小姐脾气的女人只能是穷光蛋的后代,富翁难道不考虑门当户吗〓 〓
  • 一个没有公主脾气、大小姐脾气的女人只能是穷光蛋的后代----引自水源某ID语
  • delphi的脾气太坏了,我还没掌握他的习性,了解他习性的进来看看,散分
  • 菜鸟发难五:呵,菜鸟又涨了脾气,老鸟们,请扶好你们的眼镜!!!!

关键词

  • jdk
  • 代码
  • 循环
  • 函数
  • 转换
  • jdk1.5
  • 类型
  • 特性
  • 静态
  • 可变参数

得分解答快速导航

  • 帖主:titaninwinter

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo