eclipse视图管理与程序调试
如何调试:双击添加断点,右键选择debug。如何查看变量值:选择要查看的变量值,右键选择watch。
配置eclispe的编译与运行环境
注意低版本的java不能运行高版本的javac编译的程序,反之则行。
在eclispe中配置java模板代码
如何添加java模板代码:Preferences>java>Editor>Templates>New
如name:tryf.pattern:try{${line_selection}(表示选择的内容)}finally{${${cursor}(光标停靠位置)}
在eclipse中导入已有的工程
把工程放到工作台目录下,在eclipse下选择File>Import
选择General>Existing Project into WorkSpace
再选择工程目录.
注意问题:要考虑原来的运行环境,jre system library就有区别,如果原来的jre和现在的jre版本不同,就要选择工程右键选择build path>Configure build path..
把jdk的库删掉,然后添加自己的库
java5的静态导入与编译器语法设置
import语句可以导入一个类或某包的所有类,只是为了少写前缀
import static导入一个类中的某个静态方法或所有静态方法
如import static java.lang.Math.max;这样就可以直接调用max()而不加Math前缀了
import static java.lang.Math.*; 导入所有的静态方法,都不用加Math前缀
注意:jdk1.4是没有静态导入这个特性.
可变参数与OverLoad相关面试题分析
可变参数的特点:
只能出现在参数列表的最后:
...位于变量类型和变量名只间,前后有无空格都可以;
调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中以数组的形式访问可变参数.
Overload vs Override
Overload是重载的意思,Override是覆盖的意思,也就是重写.
可变参数举例:
public static int add(int x,int... args){
int sum=x;
for(int i=0;i<args.length;i++){
sum+=args[i];
}
return sum;
}
java5的增加for循环
语法:
for(typs 变量名: 集合变量名){}
注意事项:
迭代变量必须在{}中定义!
集合变量可以是数组或实现了iterable接口的集合类
举例:
publlic static int add(int x,int...args){
int sum=x;
for(int arg:args){
sum+=arg;
}
return sum;
}
基本数据的自动拆装箱及享元设计模式
例:
Integer iobj = 3;
System.out.println(iobj + 12);
Integer i1=13;
Integer i2=13;
Integer i3=137;
Integer i4=137;
System.out.println(i1==i2); //true
System.out.println(i3==i4); //fasle
享元模式 flyweight
有很多个小的对象他们有很多个属性相同,把他们变成一个对象,把那些不同的属性变成方法的参数,称为外部状态,相同属性称之为内部状态.
枚举
枚举的作用介绍:
枚举就是要让某个类型的变量的取值只能为若干个固定值中的一个,否则,编译器就会报错。玫举可以让编译器在编译时就可以控制源程序中填写的非法值,普通变量的方法在开发阶段无法实现这一目标。
用普通类模拟枚举的实现原理
采用抽象方法定义nextday()将大量的if.else语句转移成了一个个独立的类
java5的玫举的基本应用
weekDay1 weekDay = WeekDay1.MON;
System.out.println(weekDay.nextDay()};
WeekDay weekDay2 = WeekDay.FRI;
System.out.println(weekDay2);
System.out.println(weekDay2.name());
System.out.println(weekDay2.ordinal());
System.out.println(WeekDay.valueOf("SUN").toString());
System.out.println(WeekDay.values().length);
实现带有构造方法的枚举
public enum WeekDay{
SUN(0),MON(1),TUE(0),WED,THI,FRI,SAT;
private WeekDay(){System.out.println("first");}
private WeekDay(int day){System.out.println("second");
}
实现带有抽象方法的枚举
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;}
}
}
}