黑马程序员_基础加强第一天——JDK1.5新特性
2014-04-09 20:17
387 查看
静态导入:
例:import static 类.*;
可以导入该类中所有的静态方法。
可变参数:
问题:一个方法接受的参数个数不固定
特点:
只能出现在参数列表的最后
...位于变量类型和变量名之间
调用含有可变参数的方法时,编译器为该可变参数隐含创建一个数组,方法体中以数组的形式访问可变参数
例: public static int add( int... args)
java5的增强for循环:
例:for(int arg:args)
基本数据类型的自动装箱与拆箱:
Interger intObj = 3;【自动装箱】
intObj + 12;【自动拆箱】
当数字在-128~127(一个字节)之间时使用享元设计模式,不用搞出很多个对象
枚举:
为什么要有枚举类?
枚举就是要让某个类型的变量的取值为若干个固定值中的一个,否则编译器报错
枚举可以让编译器编译时就控制源程序中的非法值
用普通类如何实现枚举功能?定义一个WeekDay来模拟枚举功能
私有的构造方法
每个元素分别用一个公有的静态成员变量表示
可以有若干公有方法或抽象方法。例如WeekDay中将nextDay()方法定义成抽象的,大量if-else语句就转化成一个个独立的子类(利用匿名内部类)
模拟枚举功能的WeekDay类:
枚举的基本应用:
举例:定义一个WeekDay的枚举
扩展:枚举类的values, valueOf, name, toString, ordinal等方法
枚举相当于一个类,可以定义构造方法、成员变量、普通方法和抽象方法
枚举的元素必须位于枚举体中最开始的部分,枚举元素成员列表后要有分号与其他成员分隔
枚举只有一个元素时,可以作为一种单例实现方式
例:import static 类.*;
可以导入该类中所有的静态方法。
可变参数:
问题:一个方法接受的参数个数不固定
特点:
只能出现在参数列表的最后
...位于变量类型和变量名之间
调用含有可变参数的方法时,编译器为该可变参数隐含创建一个数组,方法体中以数组的形式访问可变参数
例: public static int add( int... args)
java5的增强for循环:
例:for(int arg:args)
基本数据类型的自动装箱与拆箱:
Interger intObj = 3;【自动装箱】
intObj + 12;【自动拆箱】
当数字在-128~127(一个字节)之间时使用享元设计模式,不用搞出很多个对象
枚举:
为什么要有枚举类?
枚举就是要让某个类型的变量的取值为若干个固定值中的一个,否则编译器报错
枚举可以让编译器编译时就控制源程序中的非法值
用普通类如何实现枚举功能?定义一个WeekDay来模拟枚举功能
私有的构造方法
每个元素分别用一个公有的静态成员变量表示
可以有若干公有方法或抽象方法。例如WeekDay中将nextDay()方法定义成抽象的,大量if-else语句就转化成一个个独立的子类(利用匿名内部类)
模拟枚举功能的WeekDay类:
public abstract class WeekDay { private WeekDay(){} //通过匿名内部类新建WeekDay子类对象: public static final WeekDay SUN = new WeekDay(){ @Override public WeekDay nextDay() { // TODO Auto-generated method stub return MON; } }; public static final WeekDay MON = new WeekDay(){ @Override public WeekDay nextDay() { // TODO Auto-generated method stub return SUN; } }; public String toString(){ return (this==SUN)?"SUN":"MON"; } public abstract WeekDay nextDay(); //抽象方法 }测试类:
public class EnumTest { public static void main(String[] args) { // TODO Auto-generated method stub WeekDay weekDay = WeekDay.MON; System.out.println(weekDay.nextDay()); } }
枚举的基本应用:
举例:定义一个WeekDay的枚举
扩展:枚举类的values, valueOf, name, toString, ordinal等方法
public class EnumTest { public static void main(String[] args) { // TODO Auto-generated method stub //测试WeekDay枚举以及其各种方法: WeekDay weekDay = WeekDay.SUN; System.out.println(weekDay); System.out.println(weekDay.name()); System.out.println(weekDay.ordinal()); //静态方法: System.out.println(WeekDay.valueOf("SUN")); System.out.println(WeekDay.values()); } //枚举 public enum WeekDay{ SUN,MON,TUE,WED,THU,FRI,SAT; } }
枚举相当于一个类,可以定义构造方法、成员变量、普通方法和抽象方法
public class EnumTest { public static void main(String[] args) { // TODO Auto-generated method stub TrafficLight trafficLight = TrafficLight.Yellow; System.out.println(trafficLight.nextLight()); } public enum TrafficLight{ Red(30){ public TrafficLight nextLight(){ return Green; } }, Yellow(5){ public TrafficLight nextLight(){ return Red; } }, Green(35){ public TrafficLight nextLight(){ return Yellow; } }; //成员变量 private int time; //带参数的构造方法 private TrafficLight(int time){ this.time = time; } //抽象方法 public abstract TrafficLight nextLight(); } }
枚举的元素必须位于枚举体中最开始的部分,枚举元素成员列表后要有分号与其他成员分隔
枚举只有一个元素时,可以作为一种单例实现方式
相关文章推荐
- 黑马程序员_基础加强第一天——Java反射机制
- 黑马程序员_Java基础加强第二天——内省/JavaBean
- 黑马程序员_Java基础加强第二天——Annotation
- 黑马程序员_ 黑马程序员_基础加强第二天——类加载器
- 黑马程序员_ 黑马程序员_基础加强第二天——代理
- 黑马程序员_7k面试题_交通灯管理
- 黑马程序员_7k面试题_银行业务调度系统
- java中一个值得注意的问题---类成员初始化与变量初始化的区别
- java方法的定义格式
- Java中Date各种相关用法
- Spring Aop 实现原理
- Spring Aop原理
- Java虚拟机(五)
- 关于如何在MyEclipse下修改项目名包名,以及类
- java中引用数据类型的传递
- Java垃圾回收机制
- eclipse中的快捷键
- <<< java异常The import java.util cannot be resolved
- 猜年龄 蓝桥杯
- Eclipse: Android Device Chooser - Unknown Target