黑马程序员_java学习日记num14

来源:互联网 发布:github 建站 打死 编辑:程序博客网 时间:2024/06/05 18:15
-------java培训,android培训期待与您交流!, ----------

主要内容简介:静态导入;可变参数;增强FOR循环;基本数据类型的装箱和拆箱;枚举;

一、静态导入

import 可以导入一个类或者某个包中所有类。

import static可以导入某个类中所有静态方法,或者某个静态方法。

二、可变参数

1、问题的由来,如果一个类中的方法,接收的参数个数不固定,那么需要定义多个函数进行重载,为了避免这一局限,可变参数应运而生

2、可变参数的特点

...位于变量类型与变量名之间,前后有无空格都可以
调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中以数组的形式访问可变参数

 

3、示例

传入不固定的参数个数,对其求和

publicstatic int add(int x,int ...args) {

intsum = x;

for(inti=0;i<args.length;i++) {

sum +=args[i];

}

returnsum;

}



三、增强FOR循环

1,语法

for(type变量名:集合变量名){}

2,特点

迭代变量必须在()中定义

集合变量可以是数组或实现了Iterable接口的集合类

3,示例

publicstatic int add(int x,int ...args) {

intsum = x;

for(intarg:args) {

sum +=args[i];

}

returnsum;

}



,基本数据类型的装箱与拆箱

对于这个特性,有一种设计模式-----享元设计模式

对于一个基本数据类型的数据,可以自动的装箱为对应的包装类对象,对于包装类对象也可以自动的拆箱为基本数据类型

下面有个一注意点,这也体现了享元设计模式

Integeri1 =137     Integer i2 =137    Integer i3=116    Integer i4 =116



i1 = =i2  //false

i3 = =i4 //true



五,枚举

1,枚举的由来

枚举就是要让某个类型的变量取值只能为若干个固定值中的一个,否则,编译器会报错。枚举可以让编译器在编译时就可以控制源程序中填写的非法值。



2,枚举的注意事项

枚举元素不论何时放在第一行,若后面有内容需要用分号隔开,构造方法需要私有。枚举中可以定义抽象方法。

可以把枚举看做是一个特殊的类,其中的每个元素都是实例对象。如果枚举中只有一个成员,可以作为一种单例的设计模式。



3,使用一般的类实现枚举

需求:演示星期一到星期日

abstract class WeekDay {

private WeekDay(){

}

public abstract WeekDay getNextDay();

public final static WeekDay SUN = new WeekDay(){

public WeekDay getNextDay(){

return MON;

}

};

public final static WeekDay MON = new WeekDay(){

public WeekDay getNextDay(){

return THU;

}

};

public final static WeekDay THU = new WeekDay(){

public WeekDay getNextDay(){

return WED;

}

};

public final static WeekDay WED = new WeekDay(){

public WeekDay getNextDay(){

return THR;

}

};

public final static WeekDay THR= new WeekDay(){

public WeekDay getNextDay(){

return FRI;

}

};

public final static WeekDay FRI = new WeekDay(){

public WeekDay getNextDay(){

return THS;

}

};

public final static WeekDay THS = new WeekDay(){

public WeekDay getNextDay(){

return SUN;

}

};

 

public String toString(){

if(this == SUN)

return "SUN";

else if(this == MON){

return "MON";

}else if(this == THU){

return "THU";

}else if(this == WED){

return "WED";

}else if(this == THR){

return "THR";

}else if(this == FRI){

return "FRI";

}else 

      return "THS";

}

}

 

4,使用枚举实现一个交通灯

public enum TrafficLamp{

RED(45){

public TrafficLamp getNextLamp(){

return GREEN;

}

},YELLOW(15){

public TrafficLamp getNextLamp(){

return RED;

}

},GREEN(30){

public TrafficLamp getNextLamp(){

return YELLOW;

}

};

  private int time;

private TrafficLamp(int time){

this.time = time;

}

public abstract TrafficLamp getNextLamp();

public int getTime(){

return time;

}

}


0 0
原创粉丝点击