黑马程序员_java学习日记num14
来源:互联网 发布:github 建站 打死 编辑:程序博客网 时间:2024/06/05 18:15
主要内容简介:静态导入;可变参数;增强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;
}
}
- 黑马程序员_java学习日记num14
- 黑马程序员_java学习日记_IO流
- 黑马程序员_java学习日记_数组
- 黑马程序员_java学习日记_集合
- 黑马程序员_Java学习日记15_File
- 黑马程序员_Java学习日记18_GUI
- 黑马程序员-学习日记_JAVA中异常
- 黑马程序员_java学习日记01
- 黑马程序员_java学习日记02
- 黑马程序员_java基础学习日记
- 黑马程序员_Java学习日记(2)
- 黑马程序员_Java学习日记 num1
- 黑马程序员_Java学习日记num2
- 黑马程序员_Java学习日记num3
- 黑马程序员_Java学习日记num4
- 黑马程序员_Java学习日记num6
- 黑马程序员_Java学习日记num7
- 黑马程序员_Java学习日记num8
- 大型网站的HTTPS实践(一)---HTTPS协议和原理
- java volatile的正确使用
- (转)linux中的IO端口映射和IO内存映射(统一编址和独立编址)
- MySql 查询数据库中所有表名
- C++编程中如何防止内存溢出问题?
- 黑马程序员_java学习日记num14
- Java提高 - 八大排序方法之直接选择排序
- 大型网站的HTTPS实践(二)-- HTTPS对性能的影响
- Java查漏补缺系列——关于保留位数,四舍五入的方法
- 字符串匹配(java)实现,普通的匹配和KMP算法 (参考)
- 高效程序员的45个习惯之敏捷反馈
- leveldb之cache
- Struts2.3.14分析-初始化1
- Linked List Cycle