新特性小知识
来源:互联网 发布:云计算的上市公司 编辑:程序博客网 时间:2024/04/30 09:39
枚举:jdk1.5以后的新特性
枚举就是让某个类型的变量的取值只能为若干个固定值中的一个,否则编译就会报错。枚举可以让编译器在编译时就可以控制源程序中填写的非法值,普通变量的方式在开发阶段无法实现这一目标。
用普通类如何实现枚举功能,定义一个weekday的类来模拟枚举功能
//weekday星期日用0表示,星期六用6表示,星期日是每个星期的第一天
1·私有构造方法
2·每个元素分别用一个公有的静态成员变量表示
3·可以有若干公有方法或抽象方法
public abstract class WeekDay { private WeekDay(){} public final static WeekDay SUN=new WeekDay(){public WeekDay nextDay() {// TODO Auto-generated method stubreturn MON;}}; public final static WeekDay MON=new WeekDay(){public WeekDay nextDay() {// TODO Auto-generated method stubreturn SUN;}}; public abstract WeekDay nextDay(); /*public WeekDay nextDay(){ if(this==SUN){ return MON; }else {return SUN;} } */ public String toString(){ return this==SUN?"SUN":"MON"; }
(1)枚举就相当于一个类,其中也可以定义构造方法,变量成员,普通方法和抽象方法。
(2)枚举元素必须位于枚举体中的最开始部分,枚举元素列表的后要有分号与其他成员分隔,把枚举中的成员方法或变量放在枚举元素的前面,编译器会报错。
(3)构造方法必须私有化
带构造方法的枚举
1、构造方法必须定义成私有的
2、如果有多个构造方法,在元素后面加括号选择构造方法
例子:
public enum WeekDay{SUN(1),MON(),TUE,WED,THI,FRI,SAT;private WeekDay (){System.out.println("1");}private WeekDay(int day){System.out.println("2");}}
3、枚举元素MON()和MON的效果一样,都是调用默认的构造方法。
实现带有抽象方法的枚举
public enum TrafficLamp{RED(30){@Overridepublic TrafficLamp nextLamp() {// TODO Auto-generated method stubreturn GREEN;}},GREEN(45){@Overridepublic TrafficLamp nextLamp() {// TODO Auto-generated method stubreturn YELLOW;}},YELLOW(5){@Overridepublic TrafficLamp nextLamp() {// TODO Auto-generated method stubreturn RED;}};public abstract TrafficLamp nextLamp();private int time;private TrafficLamp(int time){this.time=time;}}
枚举只有一个成员时,就可以作为一种单例的实现方式。
- 静态导入(导入后不用 类.方法,只用方法名) 1.5以后
Import 语句可以导入一个类或某个包中的所有类
Import static 语句可以导入一个类中的某个静态方法或所有静态方法
- Overload 与override的区别
重载:只有返回值不同,不行(同名方法,参数不同)
重写(覆盖):其他类以及实现的类
- 可变参数(只能出现在列表的最后)
位于变量类型和变量名之间,前后无空格都可以;
调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中一数组的形式访问可变参数。
例:function(int x , int… args)
- 增强for循环
格式:for( (可加修饰)type 变量名:集合变量名){…}
注意:迭代变量必须在()中定义。
集合变量可以是数组或实现了Iterable 接口的集合类
- 自动装箱与自动拆箱 1.5
享元模式 flyweight 有很多个小的对象,有很多属性相同,把它们变成一个对象,不同的属性变成方法的参数(外部状态),那些相同的属性称为这个对象的内部状态。
Ineteger i1=12;Ineteger i2=12; System.out.println(i1==i2); //true//在一个字节类内(-128~127)小的整数在装箱的时候装成同一个对象Ineteger i3=128;Ineteger i4=128; System.out.println(i3==i4);//falseInteger i5= Integer.valueOf(3);Integer i6 = Integer.valueOf(3);System.out.println(i5==i6);//true
- 新特性小知识
- 每天一点小知识【5】— Android8.0新特性
- 每天一点小知识【7】—Android7.0新特性
- java9新特性小探
- C#语法小知识(七)特性
- HTML5初探-CSS3新特性小示例
- java8新特性的小例子
- 小丸子总结几个es6新特性
- Java----萌新的小知识
- Integer小知识(新的理解)
- 小程序演示 C# 3.0 语法新特性
- php5.3.0尝鲜:新特性小介绍之nowdoc
- java5新特性之自动装箱小细节
- ES6的新特性-让前后端差异越来越小
- 使用Servlet3.0新特性进行web开发小demo
- Adroid小知识汇总(不断根新~~)
- JSP小知识——萌新笔记
- 新特性
- CFile类ReadHuge和WriteHuge
- C 语言静态变量和静态函数
- HDU 1466 计算直线的交点数
- eclipse整理项目
- HDU--杭电--1686--Oulipo--KMP--水题
- 新特性小知识
- 交互设计中的默认值
- 谈谈我的机房重构版的感受
- MD5加密
- RTX公网部署文档
- Palindrome Number
- uva 10387 Billiard 几何 撞球
- 多路模拟开关 AD7506
- AIDL基本用法