黑马程序员-----java基础加强<一>

来源:互联网 发布:mysql添加主外键约束 编辑:程序博客网 时间:2024/06/07 04:07

                              ------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;}}






0 0