java——jdk1.5新特性
来源:互联网 发布:易哲软件 编辑:程序博客网 时间:2024/05/19 10:54
新特性
一、静态导入
import static java.Math.*:注意static的位置
注意:
当导入的两个类中有同名成员时,需要在成员前加上相应的类名。 当类名重名时,需要指定具体的包名。 当方法重名时,指定具体所属的对象或者类。
二、可变参数
如果一个方法在参数列表中传入多个参数,个数不确定,那么每次都要复写该方法,这时可以用可变参数作为数组形式参数
注意:
1.用...表示2.只能位于参数列表的最后3.调用可变参数的方法时,编译器会自动创建一个数组,利用数组来操作参数
三、增强for
1.除了简单遍历并读取其中的内容外,不建议使用增强的for循环
2.使用局限性:
对于数组,不能方便的访问下标值
对于集合,必须实现Iterable接口。与使用Interator相比,不能方便的删除集合中的内容(在内部也是调用Iterator)
四、自动装箱与拆箱
装箱:Integer i = 1;
拆箱:Integer num = new Integer(13);
Syso(num+1);
注意:
在一个字节之间(-128 ~ 127)的数,包装成Integer类型对象时,会存入常量池中的缓存,再创建一个对象的时候,如果其值在这个范围内,就会直接到常量池中寻找,不会再创建一个对象。因为这些小数值使用的频率很高,所以缓存到常量池中,被调用时就方便很多。Integer i1 = 12;Integer i2 = 12;i1==i2//trueInteger i1 = 137;Integer i2 = 137;i1==i2//false享元模式(flyweight):有很多小的对象,他们有很多属性相同,把属性相同的部分变为同一个对象,称为内部状态。那些不同的属性,把他们变成方法的参数,称为外部状态。这种优化内存,只创建一个对象的模式,称之为享元模式
五、枚举
1.概述:
枚举是JDK1.5的一个新特性。 枚举就是要让某个类型的变量的取值只能为若干个固定值中的一个,否则,编译器就会报错。枚举可以让编译器在编译时就可以控制源程序中填写的非法值,普通变量的方式在开发阶段无法实现这一目标。
练习:
用普通类如何实现枚举功能
定义一个Traffic 的类来模拟枚举功能。 1、私有的构造方法 2、每个元素分别用一个公有的静态成员变量表示 3、可以有若干公有方法或抽象方法。采用抽象方法定义nextDay就将大量的if.else语句转移成了一个个独立的类。 public abstract class Traffic { public static final Traffic blue = new Traffic() { public Traffic next() { return yellow; } }; public static final Traffic yellow = new Traffic() { public Traffic next() { // TODO Auto-generated method stub return red; } };; public static final Traffic red = new Traffic() { public Traffic next() { // TODO Auto-generated method stub return blue; } };; public abstract Traffic next(); public String toString() { return this==blue? "GO":"STOP"; }}
2枚举的基本应用:
Enum是Java 语言枚举类型的公共基本类。
1、通过enum关键字定义枚举类,枚举类是一个特殊的类,每个元素都是该类的一个实例对象。
2、枚举变量只能使用规定好的那些值,若不是这些值,编译器不会通过。
3、好处:在编译时期就会发现错误,表明值不符合,减少了运行时期的错误。
4、如果调用者想打印枚举类中元素的信息,需复写toString方法。
注:枚举类是一个class,而且是一个不可被继承的final类,其中的元素都是类静态常量。
public static void main(String[] args) { WeekDay weekDay=WeekDay.MON; System.out.println(weekDay);//输出枚举常量名 System.out.println(weekDay.name());//输出对象名 System.out.println(weekDay.getClass());//输出对应类 System.out.println(weekDay.toString());//输出枚举对象名 System.out.println(weekDay.ordinal());//输出此对象在枚举常量的次序 System.out.println(WeekDay.valueOf("WED"));//将字符串转化为枚举常量 System.out.println(WeekDay.values().length);//获取所以的枚举元素,并打印其长度 } public enum TrafficLamp { //这里';'可有可无,下面有其他方法时,不能省去 //后面的方法必须定义在变量的下面 RED(30) { public TrafficLamp nextLamp() { return GREEN; } },GREEN(45) { public TrafficLamp nextLamp() { return YELLOW; } },YELLOW(10) { public TrafficLamp nextLamp() { return RED; } }; public abstract TrafficLamp nextLamp(); int time; private TrafficLamp() {}; private TrafficLamp(int time) { this.time = time; } }注意: 1、所有的枚举都继承自java.lang.Enum类,由于Java不支持多继承,所以枚举对象不能再继承其他类,也不能被继承。 2、switch语句支持int,char,enum类型,使用枚举,能让我们的代码可读性更强。 3.枚举只有一个成员时,就可以作为一种单例的实现方式
0 0
- Java——jdk1.5新特性
- java——jdk1.5新特性
- java基础——泛型(jdk1.5新特性)
- JAVA高新技术——JDK1.5新特性
- Java基础——JDK1.5版本新特性
- 黑马程序员——java之JDK1.5新特性
- 黑马程序员——java--JDK1.5新特性
- 黑马程序员——java基础---JDK1.5新特性
- -java jdk1.5新特性
- java JDK1.5新特性
- java--JDK1.5新特性
- Java-JDK1.5新特性
- jdk1.5新特性——循环
- 黑马程序员 — JDK1.5 新特性
- 黑马程序员—jdk1.5新特性
- jdk1.5的新特性(java泛型)
- JDK1.5新特性之Java Generics
- JDK1.5新特性之Java Generics
- Unity 5.1 重大发布,新功能全力支持VR开发
- swift override --有一个递归问题未解决
- C#不能调试非托管C++代码问题
- ExtJS ComboBox 下拉列表详细用法
- 数据库的类型转换,获取系统时间和联合
- java——jdk1.5新特性
- HDU 2067 小兔的棋盘(dp)
- JavaScript词法结构
- php换行符
- Sublime Text 2中文乱码解决方案
- PHP编码规范
- Android Studio 一些使用经验---第一次使用Android Studio时你应该知道的一切配置
- SpringMVC 上传文件
- PHP7和HHVM的性能之争