现在的位置: 首页 > 综合 > 正文

《Java5.0新特性》

2013年11月05日 ⁄ 综合 ⁄ 共 3872字 ⁄ 字号 评论关闭

一、自动封箱和自动解箱技术

1、         
自动封箱技术:编译器会自动将简单类型转换成封装类型。

2、         
编译器会自动将封装类型转换成简单类型

3、         
注:自动封箱和自动解箱只会在必要的情况下执行。

 

、静态引用概念:

     
如:import static java.lang.System.*;

          
out.println(“a”);

 

三、新型for循环for—each,用于追求数组与集合的遍历方式统一

1、         
数组举例:

String[] 
ss  =  {“a”,”b”,”c”};

for(String 
s : ss){  //
s:
遍历元素类型
ss:
要遍历的对象

                      
System.out.println(s);

}

2、         
集合举例:

List 
ll  =  new      
ArrayList();

 
for(Object  o : ll ){

        
System.out.println(o);

}

注:凡是实现了java.lang.Iterable接口的类就能用for—each遍历;

 

四、可变长的参数

一个关于变长参数的例子:

/**********************************************************/

import
static java.lang.System.*;

public
class TestVararg {

  
public
static
void main(String... args){

     
m();

     
m(
"Liucy");

     
m(
"Liucy","Hiloo");

  
}

  
static
void m(String... s){

//s可以看作是一个字符串数组String[]
s

     
out.println("m(String...)");

  
}

  
static
void m(){

     
out.println("m()");

  
}

  
static
void m(String s){

     
out.println("m(String)");

  
}

}

/**********************************************************/

注:一个方法的参数列表中最多只能有一个变长参数,而且这个变长参数必须是最后一个参数。方法调用时只会在必要时去匹配变长参数。

 

五、枚举enum

1、          
定义:枚举是一个具有特定值的类型,对用户来说只能任取其一。对于面向对象来说时一个类的对象已经创建好,用户不能新生枚举对象,只能选择一个已经生成的对象。

2、          
枚举本质上也是一个类。枚举值之间用逗号分开,以分号结束。

3、          
枚举分为两种:类型安全的枚举模式和类型不安全的枚举模式

4、          
枚举的超类是:Java.lang.Enum。枚举的构造方法默认也必须是private并且枚举是一个final类所以不能有子类。

5、          
一个枚举值实际上是一个公开静态的常量,也是这个类的一个对象。

6、          
枚举中可以定义抽象方法,其实现在个个枚举值中(匿名内部类的方式隐含继承)

/**********************************************************/

final
class Season1{

  
public
static
final Season1
SPRING=new
Season1(
"");

  
public
static
final Season1
SUMMER=new
Season1(
"");

  
public
static
final Season1
AUTUMN=new
Season1(
"");

  
public
static
final Season1
WINTER=new
Season1(
"");

  
private Season1(){}

  
String
name;

  
private Season1(String name){

     
this.name=name;

  
}

  
public String getName(){

     
return
this.name;

  
}

}

/**********************************************************/

/**********************************************************/

enum
Season2{

  
SPRING(""),

  
SUMMER(""),

  
AUTUMN(""),

  
WINTER("");

  
String
name;

  
Season2(String name){

     
this.name=name;

  
}

  
public String getName(){

     
return
this.name;

  
}

}

/**********************************************************/

 

7、          
一个关于枚举的例子

 

/**********************************************************/

import
static java.lang.System.*;

public
class TestTeacher {

  
public
static
void main(String[] args) {

     
for(TarenaTeacher t:TarenaTeacher.values()){

       
t.teach();

     
}

  
}

}

 

enum
TarenaTeacher{

  
LIUCY("liuchunyang"){

void teach(){out.println(name+"
teach UC"
);}},

  
CHENZQ("chenzongquan"){

void teach(){out.println(name+"
teach C++"
);}},

  
HAIGE("wanghaige"){

void teach(){out.println(name+"
teach OOAD"
);}};

  
String
name;

  
TarenaTeacher(String name){

     
this.name=name;

  
}

  
abstract
void teach();

}

/**********************************************************/

 

六、泛型

1、         
为了解决类型安全的集合问题引入了泛型。

泛型是一个编译时语法。

2、         
List<String> 
l  =  new 
ArrayList<String>();

<String>:表示该集合中只能存放String类型对象。

3、         
使用了泛型技术的集合在编译时会有类型检查,不再需要强制类型转换。String str 
=  l.get(2);

注:一个集合所允许的类型就是这个泛型的类型或这个泛型的子类型。

4     
List<Object>  l  = 
new  ArrayList<Integer>
×

                           
必须类型一致,泛型没有多态

5     
泛型的通配符<?>

          
泛型的通配符表示该集合可以存放任意类型的对象。

          
static void print( Cllection<?> c ){

                           
for( Object o : c )

                                         
out.println(o);

             
}

6       
带范围的泛型通配符

             
(1)
、向下匹配:<? 
extends  Number>

                    
 
表示该集合元素可以为Number类型及其子类型(包括接口)

             
(2)
、向上匹配:<? 
super  Number>

                    
 
表示该集合元素可以为Number类型及其父类型

(3)、接口实现:<? extends
Comparable>

     
表示该集合元素可以为实现了Comparable接口的类

7       
泛型方法

在返回值与修饰符之间可以定义一个泛型方法

Public static <T> void copy(T[] array,Stack<T> sta){……}

             
public static <T,E extends T> void copy (T[] array,Stack<E> sta){…..}

             
public static <T extends Number&Comparable>

void copy(List<T> list,T[] t);

8、          
不能使用泛型的情况:

1)、带泛型的类不能成为Throwable类和Exception类的子类

               
因为cathc()中不能出现泛型。

2)、不能用泛型来new一个对象

               
如:T t = new T();

3

抱歉!评论已关闭.