黑马程序员------第15天(高新技术篇)

---------------------- ASP.Net+Unity开发.Net培训、期待与您交流! ----------------------

java5的一些简单新特性

1.     静态导入

a)       import 语句可以导入一个或者某包中的所有类

b)       import static 语句导入一个类中某个静态方法所有静态方法

c)       import static java.lang.Math.*;

d)       Math

1.       Math.max(int a,int b)

2.       Math.abs(int a,int b)

2.     可变参数

a)       overload和override的区别:

overload:重载

override:重写(覆盖)

不仅仅说他们两个的区别

b)       一个方法接收的参数的个数不确定à可变参数

c)       可变参数的特点:

1.       只能出现在参数列表的最后面

2.       …位于变量类型和变量名之间,前后有无空格都可以

3.       调用可变参数方法时,编译器为该可变参数隐含创建一个数组,在方法体中以数组的形式访问可变参数

3.     for循环增强

a)       语法:for(type 变量名:集合变量名){…}

b)       注意:①迭代变量必须在( )中定义②集合变量可以是数组或者实现了Iterable接口的集合类

c)       学习知识的方法:sun公司的文档:langspec

4.     基本数据类型自动拆箱和装箱

a)       自动装箱:Integer num1=12;把一个基本数据类型装箱成一个基本数据类型对象。

b)       自动拆箱:System.out.println(num1+12);

c)       特点:如果一个数字在-128—127之间,就会缓存起来,超过这个范围就会令另辟空间

d)       模式:当数据很小,创建很多个对象,这个模式就叫做享元模式(flyweight)

 

如果很多很小的对象,他们有很多相同的东西,那么你就可以把它变成一个对象,还有很多不同的东西变成外部的属性,作为方法的参数传入

这就是享元模式

 

例子:输入法里面26个字母

 

java5的枚举

1.      枚举的作用介绍

a)       为什么要有枚举

问题:要定义星期几,或者性别的变量,该怎么定义?假设用1-7分别表示星期一到星期日,但有人可能会写成 int weekday=0

 

枚举就是要让某个类型的变量的取值只能为若干个固定值中的一个,否则编译失败,枚举可以让编译器在编译时就能控制源程序中填写的非法值,普通变量的方式在开发阶段无法实现这一目标

2.      用普通类模拟枚举的实现原理

a)       每一个枚举都是对象

b)       例子:

publicclass WeekDay {

         private WeekDay(){}

         public final static WeekDay SUN=newWeekDay();

         public final static WeekDay MON=newWeekDay();

         public WeekDay nextDay()

         {

                   if(this==SUN)

                   {

                            return MON;

                   }else

                   {

                            return SUN;

                   }

         }

         public String toString()

         {

                   returnthis==SUN?"SUN":"MON";

         }

}

 

public final static WeekDay SUN=newWeekDay(){

                  publicWeekDay nextDay() {

                            //TODO Auto-generated method stub

                            returnMON;

                  }

         };

                            匿名类:

                            采用抽象方法定义nextDay就将if..else方法转移成了一个个独立的类

3.      java5的枚举的基本应用

 

4.      实现带有构造方法的枚举

public enum WeekDay

{

           SUN(1),MON(2),TUE(),WED,THI,FRI,SAT;

           privateWeekDay()                 

{

                    System.out.println("first");

           }

           privateWeekDay(int Day)

           {

                    System.out.println("second");

           }

}

//1,位置上,构造方法一定要写在列表之后

2,构造函数一定是私有的

 

5.      实现带有抽象方法的枚举

         publicenum TrafficLamp

         {

                   RED(30){

                            public  TrafficLamp nextLamp()

                            {

                                     returnGREEN;

                            }

                   },GREEN(45){

                            public  TrafficLamp nextLamp()

                            {

                                     returnYELLOW;

                            }

                   },YELLOW(5){

                            public  TrafficLamp nextLamp()

                            {

                                     returnRED;

                            }

                   };

                  

                   publicabstract TrafficLamp nextLamp();

                   privateint time;

                  

                   privateTrafficLamp(int time)

                   {

                            this.time=time;

                   }

         }

 

注意:枚举只有一个成员时,就可以作为一个单例设计模式

---------------------- ASP.Net+Unity开发.Net培训、期待与您交流! ----------------------
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值