1.eclipse的使用技巧
Workspace与project
Perspective与view
设置整个workspace的javac与java。
设置单个工程的javac与java。
高版本的java能否运行低版本的javac编译的程序?可以 向下兼容
低版本的java能否运行高版本的javac编译的程序?不行
快捷键的绑定与代码模板 windows->preferences-> general->keyswindows->preferences->java->templates
利用快捷键提高工作效率
在应用中具体举例讲解
必须要求:会切换工作间与导入项目 file->switch workspace->other
2.静态导入
import语句可以导入一个类或某个包中的所有类。
Import static 语句导入一个类中的某个静态方法或所有静态方法
作用:当需要大量调用其他类的静态方法时 可省去写类名的麻烦
弊端:容易混淆了方法
import static java.lang.Math.*;
public class StaticImport {
public static void main(String[] args) {
int i = 1;
try{
i++;
}finally{
System.out.println("template");
}
System.out.println(i);
System.out.println(max(3, 6));
System.out.println(abs(3-6));
}
}
3.可变参数
问题:一个方法接受的参数个数不固定,例如
System.out.println(add(2,3,5));
System.out.println(add(1,2,3,5));
可变参数的特点
只能出现在参数列表的最后。
…位于变量类型和变量名之间,前后有无空格都可以。
调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中以数组的形式访问可变参数。
public class VariableParameter {
public static void main(String[] args) {
System.out.println(VariableParameter.add1(2,3));
System.out.println(add1(5));
System.out.println(VariableParameter.add2(10, 2,4));
System.out.println(add2(7));
}
public static int add1(int ... args){
int sum = 0;
for(int i : args)
sum += i;
return sum;
}
public static int add2(int x,int ... args){
int sum = x;
for(int i : args)
sum += i;
return sum;
}
}
4.增强for循环
语法
for(type 变量名 : 集合变量名){…}
type前可以加修饰符,如final
注意事项
迭代变量必须在( )中定义。
集合变量可以是数组或者实现了Iterable接口的集合类。
List<String> list=new ArrayList<String>();
for(String s:list){
System.out.println(s);
}
5.基本数据类型的自动拆箱与装箱
自动装箱:
Integer num1 = 12;
自动拆箱:
System.out.println(num1+12);
6.枚举
为什么要有枚举
问题:要定义星期几或性别的变量,该怎么定义?
枚举就是要让某个类型的变量的取值只能为若干个固定值中的一个,否则编译器就会报错。枚举可以让编译器在编译期就可以控制源程序中的非法值。
用普通类如何实现枚举功能,定义一个Weekday的类来模拟枚举功能
采用抽象方法定义nextDay就将大量的if.else语句转移成一个个独立的类。
注意:枚举类的构造方法为private(不可改变,可用来实现单例模式)
枚举的基本应用
总结:枚举是一种特殊的类,每个元素可以看成是该类的一个实例对象(下面做出讨论)。
示例1:
可以看到 main()方法中只调用了一个Weekend.QUESDAY元素 却初始化了所有的枚举元素
通过枚举元素可以调用枚举类的内部方法
示例2:
可以看到这里的元素MONDAY相当于一个内部类 实现了weekend的抽象方法show()(有点类似于匿名类的写法)
可以把MONDAY看成一个实现了父接口的的子类
示例3:
可以看出 MONDAY并不是Weekend的一个实例
总结:
1.枚举类的构造方法私有(即便通过反射也无法创建示例(单例))
2.调用一个枚举元素 就初始化所有的枚举元素(如示例1)
3.枚举元素必须实现枚举类内部所有的抽象方法
4.枚举元素不是枚举类的一个实例(见示例3)
enum的一些方法:
非静态方法:(所有的枚举类都继承了Enum方法)
1)String toString() ;//返回枚举量的名称
2)int ordinal() ;//返回枚举值在枚举类中的顺序,按定义的顺序排
3)Class getClass() ;//获取对应的类名
4) String name();//返回此枚举常量的名称,在其枚举声明中对其进行声明。
静态方法:
1)valueOf(String e) ;//转为对应的枚举对象,即将字符串转为对象
2)values() ;//获取所有的枚举对象元素
关于枚举在单例中的应用 再之后的单例模式章节中单独讲解
-version1.0 2015.1.27