第一天【反射、枚举、JUnit调试】
1、介绍了开发工具的基本应用及快捷键的使用
1)myeclipse和eclipse
2)快捷键
Alt + / 代码提示
Ctrl + 1 快速修复
syso + Alt + / 快速输入System.out.println();
Ctrl + Shift + f 格式化代码
Ctrl + Shift + o 导入多个包
Ctrl + Shift + m 导入单个包
Ctrl + Shift + X 转大写
Ctrl + Shift + Y 转小写
Ctrl + / 单上注释,取消注释
Ctrl + Shift + /和\ 多行注释,取消注释
Alt + 上下按键 移动选择的行
Alt + shift + r 重构包名、类名、变量等
Alt + Shift + m 抽取方法
2、JUnit调试工具的使用
1)导入Junit的jar包到项目,JDK自带的,默认没有导入,可以在使用的时候在通过Ctrl + 1快速修复快捷键导入到项目中
2)在需要调试的方法上添加@Test注解,import 入相应的包
3)右键选择Run As -> JUnit Test 就可以对所有带@Test注解的方法进行调试运行
4)如果只想对单个方法进行调试,可以打开Outline窗口界面,右键选中相应的方法,右键选择Run As -> JUnit Test 就可以单个测试。
5)在执行每个@Test注解的方法前执行@Before注解的方法,后执行@After注解的方法,这里的所以方法必须是public
6)在类加载前执行@BeforeClass注解的方法,类结束后执行@AfterClass注解的方法,这里的方法必须是public static静态的方法,因为类加载时并没有对象
3、Eclipse的单步调试和进入方法
1)在需要暂停运行的行前双击打上断点
2)右键 Debug As 进入Debug调试界面,选中需要知道的变量 右击 -> watch,
3)单击Step Over (F6)即可进行单步执行
4)在单步调试的时候如果我们想进入方法,可以在方法调用行打断点,调试时 Step Into (F5)
4、静态导入(JDK1.5新特性)
1)导入对象的字段(属性,成员多种说法),老师说称为字段比较标准
import static java.lang.Math.PI; 导入字段
import static java.lang.Math.pow; 导入方法
import static java.lang.System.out; 导入对象
5、增强for循环【重点】(JDK1.5新特性)
1)可以用来循环取得集合的元素,如果需要在取出的时候对集合进行增删操作,还是用Iterator迭代器。
2)取出数组元素等
6、可变参数(JDK1.5新特性)
其实可变数组就相当于传入一个数组参数,而那个数组参数是不固定长度的,你传几个参数就有多长。
例子:
public void show(String ... args);
要注意,可变参数必须位于参数列表的最后。
7、枚举Enum(JDK1.5新特性)
每个枚举值都相当于是一个静态实例对象,如果枚举值只有一个,就是相当于是单例
8、反射
1)获得类文件的字节码,有三中方式可以获取,推荐第一种方式。
1.1)Class clazz = Class.forName("类的完整路径");
1.2)Class clazz = 类名.class;
1.3) Class clazz = 对象.getClass();
2)反射获得构造方法
2.1)public 空参数构造方法;
Constructor construcotr = clazz.getConstructor();
constructor.newInstance(); 实例化对象
2.2) protected 空参数构造函数;
Constructor constructor = clazz.getDeclaredConstructor();
constructor.newInstance();
2.3) private 空参数构造函数;
Constructor constructor = clazz.getDeclaredConstructor();
constructor.setAccessible(true);
constructor.newInstance();
3)反射获得字段
3.1)public共有字段
Field field = clazz.getFiled();
3.2) protected保护字段
Field field = clazz.getDeclaredField();
3.3)private 私有字段
Field field = clazz.getDeclaredField();
field.setAccessible(true);
4)反射获得方法
4.1)public 方法
Method method = clazz.getMethod(args.class);
method.invoke("对象",args);
4.2)protected方法
Method method = clazz.getDeclaredMethod(args.class);
method.invoke("对象",args);
4.3)private 方法
Method method = clazz.getDeclaredMethod(args.class);
method.setAccessible(true);
method.invoke("对象",args);
5)反射main方法
Method method = clazz.getMethod(String[].class);
method.invoke("对象",(Object)new String[]{"parameter1","parameter2","parameter3"});
如果参数的方法是数组对象时,就要小心了,要把数组强转为Object对象,反射可变参数的方法和反射main一样。
小知识点:
1、switch可接收到参数类型:byte,short,char,int,enum(jdk1.7新特性),前三种类型会自动提升为int类型。
2、在迭代集合的过程中不能直接对集合进行增删操作,必须通过迭代器来操作,否则会出现异常,ListIterator迭代器的功能比较强大,它是Iterator的子类。
3、老师要求必须掌握的两个类:
Arrays工具类,专门用于操作数组的工具类。
Collections工具类,专门用于操作集合的工具类。