jdk5.0新特性

一、jdk5.0中的新特性:

1、静态导入;

2、自动装箱/拆箱;

3、增强for循环;

4、可变参数;

5、枚举、反射、内省;

6、泛型;

7、元数据;

二、详细说明

1、静态导入

import  static  包名.类名.静态属性/静态方法/*;

eg:import java.Lang.System.out

         out.println("hello word!!");

2、自动装箱/拆箱

自动装箱:开发人员可以把一个数据的基本类型直接赋给对应的包装类;

自动拆箱:可以把一个包装类对象直接赋给对应的基本数据类型;

eg:Integer i = 1;     // 自动装箱

         int j = i;              //自动拆箱

eg:List list = new ArrayList();

         list.add(1);       //自动装箱 ,自动将基本数据类型int转为Integer

         list.add(1);       //自动装箱

         Iterator it = list.iterator(); 

         while(it.hasNext())

         {

     int k = (Integer)it.next();    //自动拆箱,将Integer转为int基本数据类型

         }

3、增强的for循环

      增强的for循环只能用在数组或者实现Iterator接口的集合类上。

(1)、操作数组

eg:int[] arr = {1,2,3};

         for(int num : arr)

        {

    System.out.println(num);

        }

(2)、操作集合

eg:List list = new ArrayList(); 

         list.add("aaa"); 

         list.add("bbb");

         list.add("ccc");

         for(Object obj : list)

         {

    String str = (String)obj; 

    System.out.println(str);

         }

(3)、虽然map并没有实现Iterator接口,但是也可以用增强的for循环来实现数据的查看

eg:i、普通方式

          Map map = new hashMap();

          map.put("1","aaa");

          map.put("2","bbb");

          map.put("3","ccc");

         Set set = map.entrySet();

         Iterator it = set.iterator();

         while(it.hasNext())

         {

    Map.Entry entry = (Entry)it.next();

    String key = entry.getJKey();

    String value = entry.getValue();

         }

ii、增强的for方式1

eg:for(Object obj : map.keySet())

        {

    String key = (String)obj;

    String value = map.get(key);

        }

iii、增强的for方式2

eg:for(Object obj : map.entrySet())

        {

    Map.Enery entry = (Entry)obj;

    String key = entry.getKey();

    String value = entry.getValue();

        }

4、可变参数:传进去的是可变参数的类型

eg:public void testSum()

        {

    sum(1,2,3,4,5);

        }

       public void sun(int ...nums)        //可变参数

       {

                int sum = 0;

                for(int i : nums)

                      sum += i;

       }

5、枚举、反射、内省;

(1)用枚举定义:

eg:enum   Grade                 //类class

        {

A,B,C,D,E;                  //类的实例对象

        }

(2)、设计出来的枚举拥有构造函数、字段、方法去分装类的更多信息

eg:@test                           //采用Junit来测试写好的方法

         public void test()

         {

                  print(Grade.A) 

         }

         public void print(Grade g)

         {

    String value= g.getValue();

    System.out.println(value);

          }

//枚举类

          enum Grade

         {

   A("100-90"),B("89-80"),C("79-70"),D("69-60"),E("59-0");

   private String value;

   //带参数的构造方法

   private Grade(String value)        //构造方法只能是私有的构造方法

   {

            this.value = value;

   }

   public String getValue()

   {

           return this.value();

   }

         }

(3)、带有抽象方法的枚举类

eg:@test                           //采用Junit来测试写好的方法

         public void test()

         {

                  print(Grade.A) 

         }

         public void print(Grade g)

         {

    String value= g.getLocalValue();

    System.out.println(value);

          }

//枚举类

          enum Grade

         {

   A("100-90")

   {

              public String getLocalValue()

              {

                       return "优";

              }

   }

   ,B("89-80")

   {               

              public String getLocalValue()

              {

                       return "良";

              }

   }

   ,C("79-70")

    {

              public String getLocalValue()

              {

                       return "中";

              }


    }

   ,D("69-60")

    { 

              public String getLocalValue()

              {

                       return "差";

              }


    }

    ,E("59-0");

    {

               public String getLocalValue()

              {

                       return "不及格";

              }

    }

   private String value;

   //带参数的构造方法

   private Grade(String value)        //构造方法只能是私有的构造方法

   {

            this.value = value;

   }

   public String getValue()

   {

           return this.value();

   }

  public abstruct String getLocalValue();

         }

(4)、枚举类的特性

         a)、枚举类是java的一种特殊类;

         b)、枚举类中声明的每一个枚举值代表枚举类的一个实例对象;

         c)、与java普通类一样,声明枚举是,也可以声明相应的属性、方法、构造函数,但是构造函数必须是私有的;

         d)、switch中的类型也可以是enum

(5)、枚举常用的方法

name()    ordinal()      valueOf(......)          values();

name():   Grade.C,name();     C

ordinal():   Grade,C,ordinal();    2

valueOf():   String str = "B";

                     Grade g = Grade.valueOf(Grade, str);     //将字符串转为枚举类  g = B;

values():     Grade[] g = Grade.values();        //得到枚举的所有值   A  B  C  D  E

                    

                                                                                                                                待续写......

6、泛型;

7、元数据;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值