黑马程序员_学习笔记_Java加强_JDK1.5部分新特性
来源:互联网 发布:手机维修培训软件 编辑:程序博客网 时间:2024/05/20 18:44
1、静态导入
Import可以导入某一类或某个包中的所有类。
Import static导入一个类中某个静态方法或所有静态方法。
下面是一个典型 的静态导入的事例。
import static java.lang.Math.*;public class StaticImport {public static void main(String[] args) {System.out.println(abs(3 - 6));System.out.println(max(3, 6));}}
2、可变参数
一个方法接受的参数个数不固定。以前的方法是多次重载。
特点:
只能出现在参数列表的最后。
…位于变量类型和变量名之间,前后有无空格均可。
调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中以数组的形式访问可变参数。
下面是可变参数的应用。
public class VariableParameter {public static void main(String[] args) {System.out.println(add(2,4,5,7,8));System.out.println(add(2,3,8));}public static int add(int x,int...args){int sum = 0;/*for(int i = 0;i<args.length;i++){sum+=args[i];}*/for(int arg:args){sum+=arg;}return sum;}}
3、增强for循环
语法:for(type 变量名:集合变量名){…}
注意事项:
1迭代变量必须在()中定义。
2集合变量可以是数组或者实现了Iterable接口的集合类。
举例:
public class VariableParameter {public static void main(String[] args) {System.out.println(add(2,4,5,7,8));System.out.println(add(2,3,8));}public static int add(int x,int...args){int sum = 0;/*for(int i = 0;i<args.length;i++){sum+=args[i];}*/for(int arg:args){sum+=arg;}return sum;}}
4、基本数据类型的装箱与拆箱
自动装箱:Integer i1 = 12;
自动拆箱:System.out.println(i1+8);
基本数据类型的对象缓存:
基本数据类型中,某些常用的值,用相应的类包装成相应的对象,存入常量池的缓存中。再创建一个对象时,如果值在范围内,就会直接到缓存中寻找,调用更加方便。
享元模式flyweight:
有多个数值比较小的对象,他们有很多属性相同,把他们变成一个对象,相同属性层位内部状态。那些不同的属性变成方法的参数,称之为外部状态。这种模式成为享元模式,可以优化内存。
5、枚举
枚举意义:
枚举就是要让某个类型变量的取值只能为若干个固定值中的一个,否则编译器就会报错。因此枚举可以让编译器在编译时就可以控制源程序中填写的非法值,普通变量的方式在开发中不能实现这一目标。
例如:星期或性别等的定义。
用普通的java类模拟枚举的实现原理。
下面的代码是用普通类来模拟了枚举的原理
public abstract class WeekDay { private WeekDay(){} public final static WeekDay SUN=new WeekDay(){ public WeekDay nextDay(){ return MON; } }; public final static WeekDay MON=new WeekDay(){ public WeekDay nextDay(){ return SUN; } }; public abstract WeekDay nextDay(); public String toString(){ return this==SUN?"SUN":"MON"; } }
采用抽象方法定义一个nextDay就将大量的if-else语句转换成一个个独立的类。
枚举的基本应用:
下面为枚举的基本应用:
public class EnumTest {public static void main(String[] args) {WeekDay weekDay2 = WeekDay.FRI;System.out.println(weekDay2);System.out.println(weekDay2.ordinal());System.out.println(weekDay2.getDeclaringClass());System.out.println(weekDay2.getClass());System.out.println(WeekDay.valueOf("SUN").toString());System.out.println(WeekDay.values().length);}public enum WeekDay{SUN(1),MON(),TUE,WED,THU,FRI,STA;private WeekDay(int day){System.out.println("second");}private WeekDay() {System.out.println("first");}}}
枚举的高级应用:
枚举就相当于一个类,其中也可以定义构造方法、成员变量、普通方法和抽象方法。
枚举元素必须位于枚举体中最开始的部分,枚举元素列表后要加分号与其他成员相分隔。
带构造方法的枚举:
构造方法必须定义为私有;
如果有多个构造方法,通过参数列表判断选择哪个方法。
枚举元素后,带不带括号都表示调用默认的构造方法;括号中带有参数,才表示调用指定方法。
交通灯枚举的创建方法:
定义枚举TrafficLamp。
实现普通方法next。
实现抽象的next方法,每个元素分别由枚举类的子类来生成的实例对象,这些子类采用类似内部类的方法进行定义。
增加表示时间的构造方法。
请看代码:
public enum TrafficLamp{RED(30){public TrafficLamp nextLamp() {return GREEN;}},GREEN(45){public TrafficLamp nextLamp() {return YELLOW;}},YELLOW(5){public TrafficLamp nextLamp() {return RED;}};public abstract TrafficLamp nextLamp();private int time;private TrafficLamp(int time){this.time=time;}}
这是一段不完整的代码,为的是便于理解枚举更深层的应用。枚举只有一个成员时,就可以作为一种单例的实现方式。
- 黑马程序员_学习笔记_Java加强_JDK1.5部分新特性
- 黑马程序员_基础加强_JDK1.5新特性
- 黑马程序员_JDK1.5部分新特性
- 黑马程序员_Java基础加强_jdk1.5重要新特性详解
- 黑马程序员_java高新技术_JDK1.5新特性
- 黑马程序员_java基础加强学习笔记之(JDK1.5新特性)
- 黑马程序员_JDK1.5新特性部分解析
- 黑马程序员 _JDK1.5后的部分新特性
- 黑马程序员_JDk1.5新特性之_泛型
- 黑马程序员_JDK1.5新特性_总结
- 黑马程序员_高新技术_JDK1.5的新特性
- 黑马程序员_学习笔记_Java加强_动态代理
- 黑马程序员_jdk1.5新特性
- 黑马程序员_jdk1.5新特性
- 黑马程序员_JDK1.5新特性-枚举
- 黑马程序员_jdk1.5新特性总结
- 黑马程序员_JDK1.5的新特性
- 黑马程序员_JDK1.5的新特性
- 常见hash算法的原理
- 数据结构与算法系列-队列-顺序队列
- 树
- IOS开发之——objectForKey与valueForKey在NSDictionary中的差异
- [thread] multi-thread, thread attributes
- 黑马程序员_学习笔记_Java加强_JDK1.5部分新特性
- 浏览器前段的几个技术需要关注-从firefox入手
- 武士风度的牛(广搜)
- TexturePacker中的offset
- wordpress搭建
- Objective-C Blocks学习
- 【编码随笔】了解C++11新特性
- C语言复习 随手写1
- Swap Nodes in Pairs