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

黑马程序员_Java基础加强之JDK1.5的新特性

2013-12-26 12:00 507 查看
------- 物联云培训java培训、期待与您交流!
----------  

一、自动装箱拆箱

装箱:例如:Integer>

拆箱:例如:i+23;   23会自动拆成基本数据类型的23,来进行运算

二、可变参数

实际上就是里面定义了一个数组

 注意:定义参数时,要把可变参数定义在末尾。因为是从前向后匹配

示例代码:

public class Change {
/**
* @param args
*/
public static void main(String[] args) {
// TODOAuto-generated method stub
change(2,3,5,7,2);
change(2,34,5);
change(3);
}
public static void change(int...cha){//可变参数
for(int i=0;i<cha.length;i++){
System.out.print(cha[i]+" ");
}
System.out.println();
}
}运行结果:
2 3 5 7 2

2 34 5

3

三、枚举

     实际上就是,不能定义其他的对象只能定义规定好了的对象。枚举类中定义的每一个对象都是唯一的。

     摸弄枚举类的原理:

     如下例子:   

public abstract  class WeekDay {

private WeekDay(){};
public static WeekDay MON=new WeekDay(){

@Override
public WeekDay nextDay() {
// TODO Auto-generated method stub
return SUN;
}};
public static WeekDay SUN=new WeekDay(){

@Override
public WeekDay nextDay() {
// TODO Auto-generated method stub
return MON;
}};
public  abstract WeekDay nextDay();
public String toString()
{
return (this==MON)?"MON":"SUN";
}
}
测试类:
public class Test1 {

/**
* @param args
*/
public static void main(String[] args) {
// TODOAuto-generated method stub
WeekDay weekday = WeekDay.MON;
System.out.println(weekday.nextDay());
}
}


下面是用枚举类模拟了一个交通灯:

代码如下:

public enumtrafficLamp
{
RED(30){

@Override
public trafficLamp nextLamp() {
// TODO Auto-generated method stub
return GREEN;
}

},
GREEN(45){

@Override
public trafficLamp nextLamp() {
// TODO Auto-generated method stub
return YELLOW;
}},
YELLOW(10){

@Override
public trafficLamp nextLamp() {
// TODO Auto-generated method stub
return RED;
}};
public abstract trafficLamp nextLamp();
private int time;
private trafficLamp(int time)
{
this.time=time;
}

}
四、高级for循环

     格式:for( 接受变量的类型 变量 : 待循环的变量 ){ }

     注意:必须是Intertor的子类才可以使用高级for循环

      在for循环体内中不能增删操作

      示例代码:        

import java.util.ArrayList;
import java.util.List;
public class ForDemo {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
List<String> list=new ArrayList<String>();
list.add("aaaaa");
list.add("bbbbb");
list.add("ccccc");
for(String s:list){//高级for循环
System.out.println(s);
}
}
}
  运行结果:

aaaaa

bbbbb

ccccc

五、静态导入

importstatic  java.lang.Math.*;//导入Math类中的所有方法

当你写类中的方法时,就不用写类名了。

示例代码:

import static com.demo.Change.*;//静态导入
public class StaticImport {
/**
* @param args
*/
public static void main(String[] args) {
// TODOAuto-generated method stub
change(3,4,6,2,7);
}
}
运行结果:3 4 6 2 7
六、泛型

其实就是限制一些数据的类型

泛型可以定义在类上,也可以定义在成员上。

当泛型定义在类上时,整个类的的类型都是一样的。

上限:<?>

ArrayList >

泛型中不存在继承关系:

ArrayList<Object>al=new ArrayList<String>();//错误

Vector<Integer> VectorList[]=new Vector<Integer>[10];//错误

Vector >

Vector<Object>>

泛型当编译完成后会去掉泛型的类型。

<?>通配符,当你不知道用什么类型时可以用?,也表示占位符。

通过反射技术来获取泛型的类型:

代码如下:

import java.lang.reflect.Method;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;
public class Test2 {
/**
* @param args
* @throws ClassNotFoundException
*/
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub

Classclazz = Class.forName("lianxi.Test2");
Methodmethod = clazz.getMethod("get", List.class);
Type[] type =method.getGenericParameterTypes();
for(Type t:type)
{
System.out.println(t);
}
}
public static List<String> get(List<String> l)
{
return null;

}
}总结:Jdk1.5h是jdk的一次历史性的变革,它里面新添加了许多的类和方法。学习和应用新的方法可以让代码更简单,也可以是代码更加优化;新事物的出现一定是它更好的解决老的事件。在学习新的方法时,我们也不能忘记或不学以前的方法,老的是基础,新的特性只是高于基础,但他也源于基础;只有学好基础才能更好的理解新特性,我们才有可能去创造新特性。

------- 物联云培训java培训、期待与您交流!
----------  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: