您的位置:首页 > 编程语言 > Java开发

jdk5.0新特性

2011-08-16 00:49 429 查看
一、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、元数据;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: