------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
==========第3单元:java5的一些简单新特性===============
08.java5的静态导入与编译器语法设置
静态导入的格式:
//import static java.lang.Math.max; //error
import static java.lang.Math.*;//ok 导入Math中的静态方法
没有静态导入的情况下:
Math.max(num1, num2);
静态导入的情况下:
max(num1, num2);
好处,简化了书写,提高了开发效率
09.可变参数与OverLoad相关面试题分析
1.可变参数格式:(可变参数只能在参数列表的最后一个位置,前面也可以有0个或多个参数)
public static int add(int x,int... args) {
sum = x;
for (int arg : args)
{
sum += args;
}
}
可变参数的原理:内部也是用数组来完成的
好处,简化了代码的书写
2. OverLoad(重载)Override(重写)的区别
OverLoad:两个函数的函数名相同,但是参数列表不同;
运用于同一个类中的,或子父类中,他们的函数功能相似.
Override:两个函数必须一模一样,运用于子父类中,接口中;
10.java5的增加for循环
格式:
for(数据类型 变量名 : 被遍历的集合(Collection)或者数组)
{
}
对集合进行遍历。
只能获取集合元素。但是不能对集合进行操作。
迭代器除了遍历,还可以进行remove集合中元素的动作。
如果是用ListIterator,还可以在遍历过程中对集合进行增删改查的动作
传统for和高级for有什么区别呢?
高级for有一个局限性。必须有被遍历的目标
11.基本数据的自动拆装箱及享元设计模式
public static void main(String[] args) {
Integer iObj = 3;//自动装箱,把基本数据类型的3装箱成Integer类型也就是对象类型的3
System.out.println(iObj + 12);//自动拆箱,把对象Integer类型的3转化从int 3 从而实现基本数据类型的运算
Integer i1 = 100;
Integer i2 = 100;
Integer i1 = 200;
Integer i2 = 200;
System.out.println(i1 == i2);//true
System.out.println(i3==i4);//false
}
//结果分析:
当Integer类型的对象接收的数字在一个字节中时(-128~127),内存中只保留一个对象,所以结果为true
以后如果有相同的数字存储进入内存,只需要给地址的应用即可
当Integer类型的对象接收的数字超过一个字节的时候,每次存储的使用都是新的对象,
所以结果为false;
这是种设计模式称为享元设计模式(Flyweight):
简单的说:
有很多个小的对象, 他们有很多的属性相同,把相同的属性提取出来做成一个对象,这些相同属性称为
内部状态;不同的属性可以通过方法的参数传入,方法传入的属性称为外部状态,称为享元设计模式
=================第4单元:java5的枚举==================
12.枚举的作用介绍
可以通过列举的方式列举出所有的对象
13.用普通类模拟枚举的实现原理
//列举性别
abstract class Gender {
private Gender(){}
public static final Gender MAN = new Gender() {
};
public static final Gender WOMAN = new Gender() {
};
public String toString() {
return this == MAN ? "MAN" : "WOMAN";
}
}
14.java5的枚举的基本应用
枚举的基本方法:
String name()
返回此枚举常量的名称,在其枚举声明中对其进行声明。
int ordinal()
返回枚举常量的序数(它在枚举声明中的位置,其中初始常量序数为零)。
String toString()
返回枚举常量的名称,它包含在声明中。
static <T extends Enum<T>> T valueOf(Class<T> enumType, String name)
返回带指定名称的指定枚举类型的枚举常量。
15.实现带有构造方法的枚举
public enum WeekDay{
SUN(1),MON(),TUE,WED,THI,FRI,SAT;
private WeekDay(){System.out.println("first");}
private WeekDay(int day){System.out.println("second");}
}
16.实现带有抽象方法的枚举
//交通灯的状态枚举列出
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;}
}