JDK15的新特性Word格式文档下载.docx

上传人:b****6 文档编号:21320348 上传时间:2023-01-29 格式:DOCX 页数:17 大小:30.74KB
下载 相关 举报
JDK15的新特性Word格式文档下载.docx_第1页
第1页 / 共17页
JDK15的新特性Word格式文档下载.docx_第2页
第2页 / 共17页
JDK15的新特性Word格式文档下载.docx_第3页
第3页 / 共17页
JDK15的新特性Word格式文档下载.docx_第4页
第4页 / 共17页
JDK15的新特性Word格式文档下载.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

JDK15的新特性Word格式文档下载.docx

《JDK15的新特性Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《JDK15的新特性Word格式文档下载.docx(17页珍藏版)》请在冰豆网上搜索。

JDK15的新特性Word格式文档下载.docx

Integer>

foo2=newGenericFoo<

foo.setFoo(newBoolean(true));

foo2.setFoo(newInteger(74));

Booleanb=foo.getFoo();

Integeri=foo2.getFoo();

System.out.println(b);

System.out.println(i);

}运行结果:

//传入两个泛型T1,T2,且T2为数组类型

T1,T2>

privateT1Foo;

privateT2[]FooArray;

publicT1getFoo()

publicvoidsetFoo(T1foo)

this.Foo=foo;

publicT2[]getFooArray()

returnFooArray;

publicvoidsetFooArray(T2[]fooArray)

this.FooArray=fooArray;

GenericFoo<

Integer,String>

g=newGenericFoo<

g.setFoo(newInteger(74));

String[]str1={"

c"

"

w"

j"

};

String[]str2=null;

g.setFooArray(str1);

str2=g.getFooArray();

System.out.println(g.getFoo());

for(inti=0;

i<

str2.length;

i++)

{

System.out.println(str2[i]);

}

//自己定义一个集合:

privateT[]objArr;

privateintindex;

publicGenericFoo()

objArr=(T[])newObject[10];

publicvoidadd(Tt)

objArr[index++]=t;

publicTget(inti)

returnobjArr[i];

5;

g.add(newInteger(i));

Integerin=g.get(i);

System.out.println(in);

//应用在HashSet

importjava.util.HashSet;

importjava.util.Iterator;

importjava.util.Set;

Set<

String>

set=newHashSet<

set.add("

cwj"

);

bb"

for(Iterator<

iter=set.iterator();

iter.hasNext();

Stringvalue=iter.next();

System.out.println(value);

System.out.println("

------------------"

Person>

set1=newHashSet<

set1.add(newPerson("

zhangsan"

20,"

tianjing"

));

lisi"

30,"

beijing"

iter=set1.iterator();

Personperson=iter.next();

Stringname=person.getName();

intage=person.getAge();

Stringadress=person.getAdress();

System.out.println(name+"

-"

+age+"

+adress);

}

classPerson

privateStringname;

privateintage;

privateStringadress;

publicStringgetAdress()

returnadress;

publicvoidsetAdress(Stringadress)

this.adress=adress;

publicintgetAge()

returnage;

publicvoidsetAge(intage)

this.age=age;

publicStringgetName()

returnname;

publicvoidsetName(Stringname)

this.name=name;

publicPerson(Stringname,intage,Stringadress)

{

this.name=name;

this.age=age;

this.adress=adress;

publicinthashCode()

finalintPRIME=31;

intresult=1;

result=PRIME*result+((adress==null)?

0:

adress.hashCode());

result=PRIME*result+age;

result=PRIME*result+((name==null)?

name.hashCode());

returnresult;

publicbooleanequals(Objectobj)

if(this==obj)

returntrue;

if(obj==null)

returnfalse;

if(getClass()!

=obj.getClass())

finalPersonother=(Person)obj;

if(adress==null)

if(other.adress!

=null)

returnfalse;

elseif(!

adress.equals(other.adress))

if(age!

=other.age)

if(name==null)

if(other.name!

name.equals(other.name))

returntrue;

 

importjava.util.HashMap;

importjava.util.Map;

publicclassTest

Map<

String,String>

map=newHashMap<

map.put("

cc"

ww"

jj"

set=map.keySet();

Stringkey=iter.next();

Stringvalue=map.get(key);

System.out.println(key+"

:

"

+value);

-----------------"

Map.Entry<

>

set1=map.entrySet();

Map.Entry<

entry=iter.next();

Stringkey=entry.getKey();

Stringvalue=entry.getValue();

限制泛型可用类型:

在定义泛型类别时,预设可以使用任何的类型来实例化泛型类型中的类型,但是如果想要限制使用泛型类别时,只能用某个特定类型或是其子类型才能实例化该类型时,可以在定义类型时,使用extends关键字指定这个类型必须是继承某个类,或实现某个接口。

当没有指定泛型继承的类型或接口时,默认使用TextendsObject,所以默认情况下任何类型都可以作为参数传入。

importjava.util.ArrayList;

importjava.util.LinkedList;

importjava.util.List;

publicclassListGenericFoo<

TextendsList>

privateT[]FooArray;

publicT[]getFooArray()

publicvoidsetFooArray(T[]fooArray)

FooArray=fooArray;

//ListGenericFoo<

HashMap>

list=newListGenericFoo<

这句就是错误的

ListGenericFoo<

ArrayList>

LinkedList>

list1=newListGenericFoo<

ArrayList[]array=newArrayList[10];

list.setFooArray(array);

LinkedList[]linked=newLinkedList[10];

list1.setFooArray(linked);

类型通配声明:

现在有这么一个要求,希望有一个参考名称foo可以接受所以下面的实例:

list=newListGenericFoo<

list=newListGenericFoo<

简单的说,实例化类型持有者时,它必须是实现List的类别或其子类别,要定义这样一个名称,可以使用'

?

'

通配字元,并使用"

extends"

关键字限定类型持有者的形态。

<

extendsSomeClass>

eg:

ListGenericFoo<

extendsList>

list=null;

通常当<

extendsObject>

时写作<

For-Each循环:

主要用于简化集合、数组的遍历。

语法:

for(typeelement:

array)

System.out.println(element)....

element是变量,array代表数组或集合引用的名字

int[]amount={1,2,};

//旧式的for遍历

amount.length;

System.out.println(amount[i]);

----"

//新式的for遍历,增强的for循环

for(intelement:

amount)

System.out.println(element);

-------"

String[]words={"

hello"

world"

for(Stringenglish:

words)

System.out.println(english);

//对二维数组的遍历

int[][]array={{1,2},{3,4}};

for(int[]row:

array)//此处里面的是int[],数组的方括号别忘了,先遍历行

for(intline:

row)

{

System.out.println(line);

}

----下列是集合的3种遍历"

List<

list=newArrayList<

list.add("

a"

b"

//下列3种遍历方式

list.size();

System.out.println(list.get(i));

for(Iteratoriter=list.iterator();

System.out.println(iter.next());

for(Stringelement:

list)

当遍历集合或数组时,如果需要访问集合或数组的下标,那么最好使用旧式的方式来实现循环或遍历,而不要使用增强的for循环,因为它丢失了下标信息。

自动装箱/拆箱(Autoboxing/unboxing):

大大方便了基本类型数据和它们包装类的使用

自动装箱:

基本类型自动转为包装类.(int>

Integer)

自动拆箱:

包装类自动转为基本类型.(Integer>

int)

importjava.util.Collection;

inta=4;

Collection<

cwj=newArrayList<

cwj.add(newInteger(74));

//原本的方法

cwj.add(74);

//JDK1.5的新特性,自动装箱,将int类型的3转换为Integer

cwj.add(a+70);

//将a+70的值int类型的74转换为Integer类型

for(Integeri:

cwj)

System.out.println(i);

可变参数(Varargs):

可变参数使程序员可以声明一个接受可变数目参数的方法。

注意:

可变参数必须是方法声明中的最后一个参数,即一个方法不可能具有两个或两个以上的可变参数。

可变参数本质上就是一个数组,对于某个声明了可变参数的方法来说,我们既可以传递离散的值,也可以传递数组对象。

但如果将方法中的参数定义为数组,那么只能传递数组对象而不能传递离散的值。

privatestaticintsum(int...nums)

intsum=0;

for(intnumbers:

nums)

sum+=numbers;

returnsum;

intresult=sum(newint[]{1,2});

System.out.println(result);

result=sum(3,4);

枚举(Enums-enumeration的缩写):

JDK1.5引入枚举类型,使用关键字enum,我们可以这样定义一个枚举类型:

publicenumColor

Red,White,Blue//Color枚举类型有此3个实例,对象。

然后可以这样来使用ColormyColor=Color.red

枚举类型还提供了2个有用的静态方法values()和valueOf()。

ColormyColor=Color.Gree;

System.out.println(myColor);

------"

for(Colorcolor:

Color.values())

System.out.println(color);

enumColor

Gree,Blue,Red//枚举成员,也代表3个实例,对象

运行结果:

定义枚举类型本质上就是在定义一个类别,只不过很多细节由编译器帮你完成了,所以某些程度上,enum关键字的作用就像是class或interface,我们所定义的每个枚举类型都继承自java.lang.Enum类,枚举中的每个成员默认都是publicfinal,且是static的,所以你可以通过类名.枚举成员名直接使用它们。

而每个枚举的成员其实就是你定义的枚举类型的一个实例(Instance),换句话说,当定义了一个枚举类型后,在编译时刻就能确定该枚举类型有几个实例,分别是什么。

在运行期间我们无法再使用该枚举类型创建新的实例了,这些实例在编译期间就已经完全确定下来了。

publicenumCoin

/*

*Coin枚举的3个对象,下面有Coin的有字符串参数的构造方法,所以这3个实例都传进了字符串值,要用括号括起来

*3个对象,每个对象都维护着一个value值,Coin构造方法就是给value赋值

hs("

haha"

),cwj("

menghuan"

),abc("

xiyou"

publicStringvalue;

publicStrin

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1