java5的一些简单新特性
1. 静态导入
a) import 语句可以导入一个类或者某包中的所有类
b) import static 语句导入一个类中某个静态方法或所有静态方法
c) import static java.lang.Math.*;
d) Math
1. Math.max(int a,int b)
2. Math.abs(int a,int b)
2. 可变参数
a) overload和override的区别:
overload:重载
override:重写(覆盖)
不仅仅说他们两个的区别
b) 一个方法接收的参数的个数不确定à可变参数
c) 可变参数的特点:
1. 只能出现在参数列表的最后面
2. …位于变量类型和变量名之间,前后有无空格都可以
3. 调用可变参数方法时,编译器为该可变参数隐含创建一个数组,在方法体中以数组的形式访问可变参数
3. for循环增强
a) 语法:for(type 变量名:集合变量名){…}
b) 注意:①迭代变量必须在( )中定义②集合变量可以是数组或者实现了Iterable接口的集合类
c) 学习知识的方法:sun公司的文档:langspec
4. 基本数据类型自动拆箱和装箱
a) 自动装箱:Integer num1=12;把一个基本数据类型装箱成一个基本数据类型对象。
b) 自动拆箱:System.out.println(num1+12);
c) 特点:如果一个数字在-128—127之间,就会缓存起来,超过这个范围就会令另辟空间
d) 模式:当数据很小,创建很多个对象,这个模式就叫做享元模式(flyweight)
如果很多很小的对象,他们有很多相同的东西,那么你就可以把它变成一个对象,还有很多不同的东西变成外部的属性,作为方法的参数传入
这就是享元模式
例子:输入法里面26个字母
java5的枚举
1. 枚举的作用介绍
a) 为什么要有枚举
问题:要定义星期几,或者性别的变量,该怎么定义?假设用1-7分别表示星期一到星期日,但有人可能会写成 int weekday=0
枚举就是要让某个类型的变量的取值只能为若干个固定值中的一个,否则编译失败,枚举可以让编译器在编译时就能控制源程序中填写的非法值,普通变量的方式在开发阶段无法实现这一目标
2. 用普通类模拟枚举的实现原理
a) 每一个枚举都是对象
b) 例子:
publicclass WeekDay {
private WeekDay(){}
public final static WeekDay SUN=newWeekDay();
public final static WeekDay MON=newWeekDay();
public WeekDay nextDay()
{
if(this==SUN)
{
return MON;
}else
{
return SUN;
}
}
public String toString()
{
returnthis==SUN?"SUN":"MON";
}
}
public final static WeekDay SUN=newWeekDay(){
publicWeekDay nextDay() {
//TODO Auto-generated method stub
returnMON;
}
};
匿名类:
采用抽象方法定义nextDay就将if..else方法转移成了一个个独立的类
3. java5的枚举的基本应用
4. 实现带有构造方法的枚举
public enum WeekDay
{
SUN(1),MON(2),TUE(),WED,THI,FRI,SAT;
privateWeekDay()
{
System.out.println("first");
}
privateWeekDay(int Day)
{
System.out.println("second");
}
}
//1,位置上,构造方法一定要写在列表之后
2,构造函数一定是私有的
5. 实现带有抽象方法的枚举
publicenum TrafficLamp
{
RED(30){
public TrafficLamp nextLamp()
{
returnGREEN;
}
},GREEN(45){
public TrafficLamp nextLamp()
{
returnYELLOW;
}
},YELLOW(5){
public TrafficLamp nextLamp()
{
returnRED;
}
};
publicabstract TrafficLamp nextLamp();
privateint time;
privateTrafficLamp(int time)
{
this.time=time;
}
}
注意:枚举只有一个成员时,就可以作为一个单例设计模式
---------------------- ASP.Net+Unity开发、 .Net培训、期待与您交流! ----------------------