黑马程序员_JDK1.5新特性

----------- android培训java培训、java博客、java学习型技术博客、期待与您交流! --------------


本章主要的知识点总结:1、泛型作用的简单介绍和高级for循环的运用

                                        2、基本数据的自动拆装箱及享元设计模式

                                        3、 枚举类的介绍

                                        4、可变参数和静态导入的使用

                               

                                                         JDK1.5新特性

  JDK1.5一个重要主题就是通过新增一些特性来简化开发,这些特性包括泛型,for-each 循环,自动装包/拆包,枚举,可变参数, 静态导入 。

1.泛型(Generic)


  一个集合可以放任何类型的对象,相应地从集合里面拿对象的时候我们也不得不对他们进行强制得类型转换。之前我们放入集合的对象都定义为Object,在取出的时候进行强制类型的转换。而在JDK1.5中引入了泛型,它允许指定集合里元素的类型,这样就可以在编译的时候对强制类型转换进行检测。

        其中又包括泛型类和泛型方法,泛型类在声明对象的时候需指明类型,并且类型是一致的。而泛型方法可以被任意类型的对象调用。

class Utils { 

private T t; 

public void setType(T t) 

{ this.t=t; }

 } 

class GenFun {

 public void printT(T t)

 { System.out.println("Show t="+t); 

}

  2.For-Each循环


  For-Each循环的加入简化了集合的遍历。假设我们要遍历一个集合对其中的元素进行一些处理。以前大多使用迭代器:

void processAll(Collection c) {  

  for(Iterator i=c.iterator(); i.hasNext();) 

{  

  MyClass myObject = (MyClass)i.next();   

 }   

}

 使用For-Each循环,我们可以把代码改写成,

void processAll(Collection c){  

 for (MyClass myObject :c)  {

 myObject.process();  

 }

      语法:for(type 变量名:集合变量名或者数组){...}

   注意事项:使用高级for循环,可以简化书写,它只能对获取集合元素,不能对集合进行操作;而使用迭代器还可以执行remove()操作;如果用ListIterator,还可以在遍历过程中对集合进行增删改查的动作。

    另外,与传统for循环相比,高级for循环有局限性,它必须要有被遍历的目标,遍历数组时,建议使用传统for循环,因为可以定义脚标。


   3.自动装包/拆包


  自动装包/拆包大大方便了基本类型数据和它们包装类地使用。

  自动装包:基本类型自动转为包装类.(int ——> Integer)

  自动拆包:包装类自动转为基本类型.(Integer ——> int)

  int a = 3;

  Collection c = new ArrayList();

  c.add(a);//自动转换成Integer.

  Integer b = new Integer(2);

  c.add(b + 2);

这里Integer先自动转换为int进行加法运算,然后int再次转换为Integer. 

   在一字节内的整数(-128~127)由于使用频率高,在封装成对象时,就缓存起来了。以便复用,这种模式叫享元模式。

    如果很多很小的对象,它们有很多相同的东西,那就可以把它们变成一个对象,还有些不同的东西,可将它们变成外部的属性作为方法的参数传入。这种模式叫 享元模式。

 

  4.枚举(Enums)


  JDK1.5加入了一个全新类型的“类”-枚举类型。为此JDK1.5引入了一个新关键字enmu. 我们可以这样来定义一个枚举类型。

  public enum Color

  {Red, White, Blue}

  然后可以这样来使用Color myColor = Color.Red.

    枚举就是要让某个类型的变量的取值只能为若干个固定值中的一个,否则,编译器就会报错。

   枚举可以让编译器在编译时就可以控制源程序中填写的非法值,普通变量的方式在开发阶段无法实现这一目标。

用普通类如何实现枚举功能,定义一个Weekday的类来模拟枚举功能。

  (1)私有的构造方法。

  (2)每个元素分别用一个公有的静态成员变量表示。

  (3)可以有若干公有方法或抽象方法,例如,要提供nextDay方法必须是抽象的。

     采用抽象方法定义nextDay就将大量的if.else语句转移成了一个个独立的类。

枚举类的代码实例

    1. public class EnumTest   
    2. {  
    3.  public static void main(String[] args)  
    4.  {  
    5.   WeekDay weekDay2 = WeekDay.FRI;  
    6.   System.out.println(weekDay2);  
    7.   System.out.println(weekDay2.name());  
    8.   System.out.println(weekDay2.ordinal());  
    9.   System.out.println(WeekDay.valueOf("SAT"));  
    10.   System.out.println(WeekDay.values().length);  
    11.  }  
    12.   
    13.  public enum WeekDay  
    14.  {  
    15.   SUN,MON,TUE,WEd,THI,FRI,SAT;  
    16.   }  
    17.  }  

   5.可变参数

      可变参数的特点:

     实际上是将数组参数的简写形式。只能出现在参数列表的最后;...位于变量类型和变量名之间,前后有无空格都可以;调用可变参数的方法时,编译器为该可变参数隐含创建一个数组, 在方法体中以数组的形式访问可变参数。


  6.静态导入(Static Imports)

  要使用用静态成员(方法和变量)我们必须给出提供这个方法的类。使用静态导入可以使被导入类的所有静态变量和静态方法在当前类直接可见,使用这些静态成员无需再给出他们的类名。

    import  static  java.lang.Math. max;  导入Math类中的max静态方法。

 

    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值