第一天【反射、枚举、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工具类,专门用于操作集合的工具类。

posted on 2012-08-22 20:15  东方泛起鱼肚白  阅读(388)  评论(0编辑  收藏  举报

导航