基础加强(day07)

本节文章的思维导图

红色部分为重点部分

1)Myeclipse的安装和使用

    * eclipse:是一个免费的开发工具

    * Myeclipse:是一个收费的插件,破解Myeclipse
        **  安装目录的要求,不能有中文和空格
        **  安装完成之后,选择工作空间,这个工作空间路径不能有中文和空格

    * 破解Myeclipse
            **  运行run.bat文件,但运行之前,必须要安装jdk,通过配置环境变量

    * Myeclipse的使用
            * 创建一个工程
                     -  类型:java project        web  project
                     -  选择依赖的jdk,可以使用myeclipse自带的jdk,或者可以使用安装的jdk

            *  创建包    package
                     -  cn.itcase.eee    表示cn目录下的itcase目录下的eee

            *  在包里面创建一个类
                    -  类的命名规范
                            **  首字母要大写        例如:StudentTest

            *  在类里面创建方法
                        public    void     test1(参数列表) {
                                    方法体或者返回值
                        }
                        -  方法的命名规范
                        **   首字母小写        例如:addNumber()

           *  定义变量
                        -  变量的命名规范
                        **  首字母小写,后面的首字母大写 例如: userName

            *  这些命名还有一种方法
                        **  使用汉语拼音命名 yonghuming mima
                        **  不能使用汉语拼音和英语结合使用(见名知意)

            *  运行程序    run as java application
                    debug as java application

2)debug的调试模式(断点调试模式)

        *  使用这种模式,调试程序(看到程序里面数据的变化)

        *  使用debug第一步需要设置一个断点(让程序运行停止在这一行)
                - 显示出来行号
                - 双击,程序一个圆点,表示断点已经设置

        * 使用debug  as方式,运行程序

        * 可以让程序向下执行
                - 使用step  over 快捷键是F6(单步执行)
                - resume    F8:表示调试结束,直接向下执行
                        **  比如当前的断点之后还有断点,跳到下一个断点
                        **  如果当前断点后面没有断点,程序直接结束

        * debug另外一个用途
                **  查看程序的源代码
                **  F5    step  into:进入方法
                **  F7    step  return:返回

3)Myeclipse的快捷键的使用(与eclipse基本相同,见JavaSE基础知识day11)

4)Junit的使用

    *  单元测试

    *  测试对象是一个类中的方法

    *  junit不是JavaSE的一部分,想要使用导入jar包
            **  但是,在Myeclipse中自带了junit的jar包

    *  首先junit版本    3.x    4.x
            * 单元测试方法时候,方法命名规则        public  void  方法名(不能有参数)  { }

    *  使用注解方法运行测试方法,在方法上面
            ** @Test

- 选中方法名称,点击右键运行,点击run as。当出现绿色条,表示方法测试通过; 当出现红色条,表示方法测试不通过。

            **  @Ignore:表示这个方法不进行测试

            **  @Before:表示在每个测试方法之前运行

            **  @After:表示在每个测试方法之后运行

            **  断言(了解)
                    -  Assert.assertEquals("测试期望的值", "方法运行的实际的值");

JDK5.0新特性

**  泛型、枚举、静态导入、自动拆装箱、增强for、可变参数
**  反射

5)泛型的简介(★★★★)

    *  为什么要使用泛型?
            -  一般使用在集合上
            ** 当我们将一个字符串类型的数据放入集合中,当数据进入集合后,变自动转换成Object类型,失去了原本的类型。
                 当获取集合数据时,需要类型转换,很容易出现类型转换问题,因此可以使用泛型避免这种问题。

    *  在集合上如何使用泛型
            - 集合  list    set    map
            -  泛型语法    集合<数据类型>    比如  List<String>

    *  在泛型里面写的是一个对象,String不是基本的数据类型,而是它的包装类

    *  在list上使用泛型ArrayList    linkedList    Vector

    *  在Set上使用泛型HashSet    LinkedHashSet    TreeSet

    *  在Map上使用泛型HashMap    TreeMap

6)泛型使用在方法上(★★☆)

    * 定义一个数组,实现指定位置上的数组元素的交换

    * 方法逻辑相同,只是数据类型不同,这个时候使用泛型方法

写在返回值之前,void之前<T>(这里可以是任意大写字母)

    ** 案例:数组取反输出(★★★)

7)泛型在类上的使用(了解)

    *  在一个类上定义一个类型,这个类型可以在类里面直接使用

public   class  TestDemo04<T> {
        //  在类里面可以直接使用T的类型
        T    aa;
        public  void  test11(T  bb)  { }
        //  写一个静态方法    在类上面定义的泛型,不能在静态方法里面使用
        public  static  <A>  void  test12(A  cc)  { }
}

    **  泛型擦除
            *  首先泛型只是出现在源代码阶段,当编译之后泛型就不存在了

8)枚举的简介(了解)

    *  什么是枚举?
            **  需要在一定的范围内取值,这个值只能是这个范围内的任意一个。

    *  使用一个关键字enum

enum    Color3 {
        RED,  GREEN,  BLUE;
}

    *  枚举的构造方法也是私有的

    *  特殊枚举的操作(了解)

    **  在枚举类里面有构造方法
                **  构造方法里面有参数,需要在每个实例都写参数

    **  在枚举类里面有抽象方法
                **  在枚举的每个实例里面都重写这个抽象方法

9)枚举的API操作(了解)

    **  name():返回枚举的名称
    **  ordinal():枚举的下标,下标从0开始
    **  valueOf(Class<T> enumType,String name) : 得到枚举的对象

    **  还有两个方法,不在API中,编译的时候生成两个方法
    ***  valueOf(String name)    转换枚举对象
    ***  values()    获取所有枚举对象数组

练习:枚举的对象、枚举的下标和枚举名称三者之间的转换

10)静态导入(了解)

    *  可以在代码里面,直接使用静态导入,导入静态方法或者常量
    *  import    static    xx.xx.xxx

    **  import static java.lang.System.out;
          import static java.util.Arrays.sort;

11)自动拆装箱(★★☆)

    *  装箱    ——    把基本的数据类型转换成包装类

    *  拆箱    ——    把包装类转换成基本的数据类型

    **  Integer    i  =  10;    // 自动装箱        int    m  =  i;    // 自动拆箱

    **  在jdk1.5以前,如何实现装箱和拆箱

    ***  JDK是会向下兼容的
                -  比如在JDK1.4里面写的代码,在5、6、7里面也能运行

    **  练习

== 执行的结果是会调用double的方法。 在jdk1.4中肯定调用的是double的方法,由于jdk是向下兼容的,所以1.5,1.6,1.7.....都会调用double的方法

12)增强for循环(★★☆)

语法:
for(遍历出来的值  :要遍历的值)  {    }

-  for(String  s  :  list)  {
        System.out.println(s);
}

    *  实现Iterable接口可以使用增强for循环

    *  在集合上使用增强for循环遍历
            List    Set    实现了Iterable接口,Map    没有实现Iterable接口

    *  增强for循环出现目的:为了替代迭代器
    **  增强for循环的底层就是迭代器

13)可变参数(★★☆)

    *  当变量数量无法准确确定时,使用可变参数能较好的满足需求

    *  可变参数的定义方法    数据类型...    数组的名称

    *  注意事项:
            (1)可变参数需要写在方法的参数列表中,不能单独定义
            (2)在方法的参数列表中,只能有一个可变参数,而且可变位置必须在参数列表末尾    - add(int a, int... nums)

14)反射的原理(★★★★★理解)

    *  应用在一些通用性比较高的代码 中
    *  后面学到的框架,大多数都是使用反射来实现

    *  在框架开发中,都是基于配置文件开发
            **  在配置文件中配置了类,可以通过反射得到类中的所有内容,可以让类中的某个方法来执行

    *  类中的所有内容:成员变量,构造方法,成员方法

    *  画图分析反射的原理
                I. 首先需要把java文件保存到本地硬盘.java
                II. 编译java文件,成.class文件
                III. 使用jvm,把class文件通过类加载器加载到内存中
                IV. 万事万物都是对象,class文件在内存中使用Class类表示
                V.  当使用反射时候,首先需要获取到Class类,得到这个类之后,就可以得到class文件里面的内容
                    -  类中的:成员变量,构造方法,成员方法
                VI. 成员变量通过    Filed
                VII. 构造方法通过    Constructor
                VIII.  普通方法通过        Method

使用反射来操作类中的构造方法和成员变量
使用反射来操作类中的成员方法

    **  当方法为静态方法,因为静态方法调用是类名.方法名,不需要类的实例
    **  使用反射操作静态方法时,也是不需要类的实例对象
             - 例如 m.invoke(null,传递的参数);

推荐阅读更多精彩内容