黑马程序员_java高新技术_JDK1.5新特性
2014-04-07 19:29
555 查看
-------
android培训、java培训、期待与您交流! ----------
可变参数
在程序编写过程中,一个方法可能会接收若干个参数,参数个数是不确定的,通常会使用重载的方法,定义出多个方法名相同,参数列表不同,实现相同的功能,JDK 1.5 提供了方法的可变参数特性,在参数个数不确定时,通过可变参数方法实现函数功能,避免了因重载列出大量的相同方法。
可变参数的特点
只能出现在参数列表的最后
。。。位于变量类型和变量名之间,前后有无空格都可以
调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中以数组的形式访问可变参数
可变参数的使用示例
语法:for(type 变量名:集合变量名){...}
注意事项:
迭代变量必须在()中定义
集合变量可以是数组或者实现了Iterable接口的集合类
基本数据类型的自动拆箱与装箱
自动装箱:
Integer i1=12;//将基本数据类型int型的12自动装箱成Integer 对象
自动拆箱:
Integer i2+13;// 将Integer 类型的i2 对象 自动拆箱成int 型 与13相加,相加后的结果再自动装箱成Integer对象
享元模式 flyweigth
当对象很小,数值不变使用频率又很高,就创建一个对象
当有很多很小的对象,他们有很多相同的属性那么就将它变成一个对象,将不同的部分变成外部属性作为方法的参数传入
Integer i3=15;
Integer i4=15;
i3==i4 结果为true
Integer i5=129
Integer i6=129
i5==i6 结果为false
i7=Integer.valueOf(12);同理//返回int 的Integer实例
i8=Integer.valueOf(12);
在装箱时如果数字在一个字节之内(-128~127),就会放在一个缓存池,当再次创建该对象时就不在开辟空间,而是直接在缓存池中取出数据,节省内存空间。
枚举
C语言中有枚举
枚举:类中定义的变量的值只能是类中规定的值,这个变量是类类型的变量,每一个枚举都是一个对象
为什么要有枚举
枚举就是让某个类型的变量的取值只能为若干个固定类型中的一个,否则编译器就会报错,枚举可以让编译器在编译时就可以控制源程序中填写的非法值,普通方式在开发时无法实现这一目标。
定义一个WeekDay类来模拟枚举的功能
每个元素分别用一个共有的静态成员变量表示
可以有若干共有方法或抽象方法,例如,要提供的getNextDay 方法必须是抽象的采用抽象方法定义getNextDay 就将大量的if else 语句转移成了一个个独立的类
枚举相当于一个类,枚举中的元素相当于类
枚举自动的将类提供了toString 方法,
提供了name,ordinal,compareTo,valueOf,values (返回数组)
枚举只有一个元素时可以作为是一种单例的实现方式
实现带有抽象方法的枚举
-------
android培训、java培训、期待与您交流! ----------
android培训、java培训、期待与您交流! ----------
可变参数
在程序编写过程中,一个方法可能会接收若干个参数,参数个数是不确定的,通常会使用重载的方法,定义出多个方法名相同,参数列表不同,实现相同的功能,JDK 1.5 提供了方法的可变参数特性,在参数个数不确定时,通过可变参数方法实现函数功能,避免了因重载列出大量的相同方法。
可变参数的特点
只能出现在参数列表的最后
。。。位于变量类型和变量名之间,前后有无空格都可以
调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中以数组的形式访问可变参数
可变参数的使用示例
public class VarableParameter { public static void main(String[] args) { System.out.println(add(2,3,5)); System.out.println(add(2,1,3,5));//调用可变参数方法,传入不同个数int型参数 } public static int add(int x,int... args)//可变参数位于参数列表的最后面 { int sum=x; for(int i=0;i<args.length;i++) { sum+=args[i]; } return sum; } }for循环增强
语法:for(type 变量名:集合变量名){...}
注意事项:
迭代变量必须在()中定义
集合变量可以是数组或者实现了Iterable接口的集合类
基本数据类型的自动拆箱与装箱
自动装箱:
Integer i1=12;//将基本数据类型int型的12自动装箱成Integer 对象
自动拆箱:
Integer i2+13;// 将Integer 类型的i2 对象 自动拆箱成int 型 与13相加,相加后的结果再自动装箱成Integer对象
享元模式 flyweigth
当对象很小,数值不变使用频率又很高,就创建一个对象
当有很多很小的对象,他们有很多相同的属性那么就将它变成一个对象,将不同的部分变成外部属性作为方法的参数传入
Integer i3=15;
Integer i4=15;
i3==i4 结果为true
Integer i5=129
Integer i6=129
i5==i6 结果为false
i7=Integer.valueOf(12);同理//返回int 的Integer实例
i8=Integer.valueOf(12);
在装箱时如果数字在一个字节之内(-128~127),就会放在一个缓存池,当再次创建该对象时就不在开辟空间,而是直接在缓存池中取出数据,节省内存空间。
枚举
C语言中有枚举
枚举:类中定义的变量的值只能是类中规定的值,这个变量是类类型的变量,每一个枚举都是一个对象
为什么要有枚举
枚举就是让某个类型的变量的取值只能为若干个固定类型中的一个,否则编译器就会报错,枚举可以让编译器在编译时就可以控制源程序中填写的非法值,普通方式在开发时无法实现这一目标。
定义一个WeekDay类来模拟枚举的功能
每个元素分别用一个共有的静态成员变量表示
可以有若干共有方法或抽象方法,例如,要提供的getNextDay 方法必须是抽象的采用抽象方法定义getNextDay 就将大量的if else 语句转移成了一个个独立的类
public abstract class WeekDay { private WeekDay(){} public static final WeekDay Mon=new WeekDay(){ //内部类 public String getNextDay() { return "Tue"; } }; public final static WeekDay Tue=new WeekDay(){ public String getNextDay() { return "Thu"; } }; public final static WeekDay Thu=new WeekDay(){ public String getNextDay() { return "For"; } }; public final static WeekDay For=new WeekDay(){ public String getNextDay() { return "Fri"; } }; public final static WeekDay Fri=new WeekDay(){ public String getNextDay() { return "Sat"; } }; public final static WeekDay Sat=new WeekDay(){ public String getNextDay() { return "Sun"; } }; public final static WeekDay Sun=new WeekDay(){ public String getNextDay() { return "Mon"; } }; public abstract String getNextDay();//抽象方法类也标记成抽象的 } package cn.heima.day1; public class EnumTest { public static void main(String[] args) { WeekDay weekday=WeekDay.Tue; System.out.println(weekday.getNextDay()); } }枚举的类用enum 关键字
枚举相当于一个类,枚举中的元素相当于类
枚举自动的将类提供了toString 方法,
提供了name,ordinal,compareTo,valueOf,values (返回数组)
枚举只有一个元素时可以作为是一种单例的实现方式
实现带有抽象方法的枚举
public enum TrafficLamp//带有抽象方法的枚举 { RED(30){ public TrafficLamp nextLamp() { return GREEN; } }, YELLOW(5){ public TrafficLamp nextLamp() { return RED; } }, GREEN(45){ public TrafficLamp nextLamp() { return YELLOW; } }; public abstract TrafficLamp nextLamp();//构造方法 private int time; private TrafficLamp(int time){}//构造方法是私有的 }
-------
android培训、java培训、期待与您交流! ----------
相关文章推荐
- 黑马程序员--Java高新技术--JDK1.5新特性(上)
- 黑马程序员--Java高新技术--JDK1.5新特性(下)
- 黑马程序员--Java高新技术--JDK1.5新特性(下)
- 黑马程序员—JAVA高新技术_JDK1.5新特性II
- 黑马程序员——Java高新技术——JDK1.5版本的新特性泛型
- 黑马程序员—JAVA高新技术_JDK1.5新特性
- 黑马程序员——java高新技术-jdk1.5新特性,注解,类加载器,代理
- 黑马程序员—【Java高新技术】之eclipse开发工具枚举及JDK1.5新特性
- 黑马程序员--JAVA高新技术之eclipse开发工具相关知识、JDK1.5新特性
- 黑马程序员--java高新技术--jdk1.5新特性
- 黑马程序员——【Java高新技术】——JDK1.5新特性:静态导入、可变参数、增强型for循环、自动装箱拆箱、枚举
- 黑马程序员--张孝祥Java高新技术-JDK1.5新特性(一)【静态导入、可变参数、增强for循环】
- 黑马程序员_高新技术之Java-JDK1.5新特性
- 黑马程序员--张孝祥Java高新技术-JDK1.5新特性(二)【基本数据类型的自动拆箱与装箱,枚举】以及享元设计模式
- 黑马程序员---java基础加强---高新技术JDK1.5新特性
- 黑马程序员:Java高新技术1--JDK1.5 新特性
- 黑马程序员 Java高新技术-jdk1.5新特性和反射基础
- 黑马程序员-Java高新技术-jdk1.5简单的新特性
- 黑马程序员 java_高新技术(一)_相关基础、JDK1.5新特性
- 黑马程序员--Java高新技术--JDK1.5新特性(上)