Day07 jdk5.0新特性&Junit&反射

day07总结

今日内容

  • MyEclipse安装与使用
  • JUnit使用
  • 泛型
  • 1.5新特性

    • 自动装箱拆箱
    • 增强for
    • 静态导入
    • 可变参数方法
  • 枚举
  • 反射

MyEclipse安装与使用(yes)

安装MyEclipse

先安装了JDK

?

MyEclipse介绍

?

  • MyEclipse是Eclipse的一个插件;
  • MyEclipse是需要花钱的;
  • MyEclipse官网不在欢迎中国人登录;

?

MyEclipse使用

?

1 创建项目
  • 选择工作空间;
  • 工作空间路径不能有空格和中文;
  • 工作空间以班名来命名:20130922
  • 创建项目;项目名以day0x为前缀,例如今天是第1天,那么今天的项目以day01为前缀;
  • 创建项目时配置JRE,如果不配置就是使用默认JRE;
  • 其实我们指定的都是JDK,而不是JRE。因为我们要开发Java项目,而不是运行!
  • 创建类,注意,所有类都必须有包,所有类名、变量名、方法名等一定要按规范来做;
  • 默认包名以cn.itcast为前缀;
  • 指定类的修饰符;
  • 指定类的父类;
  • 指定类的接口;
  • 指定方法:是否创建main、是否通过父类创建构造器、是否实现抽象方法;
  • 编写Hello World;
  • 运行java程序的方式;

?

断点调试模式运行java程序

?

1 断点调试的目的
  • 跟踪源代码;
  • 观察程序运行状态;

?

2 调试程序1

  编写求和代码

  • 设置断点;
  • debug运行;
  • 进入debug透视图;
  • 程序会运行到断点处停住;
  • 当前行还没有运行;
  • 查看变量值:选中变量à鼠标右键àWatch;
  • F5(跳入)、F6(跳过)、F7(跳出);

?

3 调试程序2

使用Arrays.binarySearch()编写折半搜索数组元素代码

  • 设置断点;
  • 测试跳入;
  • 测试跳过;
  • 测试跳出;
  • 添加断点;
  • 测试进入下一断点;
  • 测试返回当前方法栈的头部(Drop To Frame);
  • 清除断点;
  • 清除表达式;
  • 注意,停止程序!

?

MyEclipse快捷键

?

  1. MyEclipse常用快捷键1
  • Alt + /(内容助理):补全;
  • Ctrl + 1(快速定位):出错时定位错误,与点击"红X"效果一样;
  • Ctrl + Shift + O:导包;
  • Ctrl + Shift + F:格式化代码块;

?

2 MyEclipse常用快捷键2
  • Ctrl + Shift + T:查看源代码;
  • Ctrl + 点击源代码:查看源代码;
  • F3:查看选中类的源代码;
  • Alt + 左键:查看源代码时的"原路返回";
  • Ctrl + Shift + X:把小写修改为大写;
  • Ctrl + Shift + Y:把小写修改为小写;
  • Ctrl + Alt + 下键:复制当前行;
  • Ctrl + /:添加或撤销行注释;
  • Ctrl + Shift + /:对选中代码添加段注释;
  • Ctrl + Shift + \:撤销当前段注释;
  • Alt + 上键:向上移动当前行;
  • Alt + 下键:向上移动当前行;
  • Ctrl + D:删除当前行;

?

MyEclipse:

  • 工作空间;
  • 项目名称;
  • 包名;
  • 类名;
  • Alt + /、Ctrl + 1、Ctrl + shift + o、Ctrl + shift + f

?

JUnit使用

测试1

?

1 JUnit的作用

JUnit用来为程序写测试用例。

以前总是需要自己写个main方法来测试某个方法。当需要测试另一个方法时,还要在main中再写一段代码对另一个方法进行测试。

JUnit是专业的测试工具!!!

?

2 为测试程序创建包

  为JUnit写一个包:junit.test包。所有测试类都写到这个包中。

?

3 编写Person类

package cn.itcast;

?

public
class Person {

????public
void run() {

????????System.out.println("run");

????}

????

????public
void eat() {

????????System.out.println("eat");

????}

}

?

4 编写Person的测试用例类:PersonTest

包资源管理器à选中Person类à右键ànewàJUnit TestCaseà修改包名为junit.testà下一步à选中要测试的方法。

每个测试方法都会有@Test注解。

在生成的PersonTest中给testXXX()方法添加测试内容。

?

5 运行测试用例
  • 选中PersonTest类à右键àRun asàJUnit Test;
  • Outlineà选中testXXX()方法à右键àRun as à JUnit Test。

?

测试2

?

1 setUp()和tearDown()
  • 再创建一个测试用例;
  • 勾选setUp()和tearDown()方法;
  • setUp()方法会有@Before注解;
  • tearDown()方法会有@After注解。
  • setUp()方法会在所有测试方法之前运行;
  • setUp()方法可以用来为每个测试方法在测试之前做一些准备工作;
  • tearDown()方法会在所有测试方法之后运行。
  • tearDown()方法可以用来为每个测试方法在测试之后做一些清理工作;

?

测试3

?

1 setUpBeforeClass()和tearDownAfterClass()
  • 再创建一个测试用例;
  • 勾选setUpBeforeClass()和tearDownAfterClass();
  • setUpBeforeClass()方法会有@BeforeClass注解;
  • tearDownAfterClass()方法会有@AfterClass注解;
  • setUpBeforeClass()方法会在测试开始之前被调用;
  • setUpBeforeClass()方法可以用来在测试开始之前做一些准备工作;
  • tearDownAfterClass()方法在测试结束之后被调用;
  • tearDownAfterClass()方法可以用来在测试结束之后做一些清理工作;
  • 这两个方法用的没有setUp()和tearDown()多。

?

@Test – 必须是public的、返回为void、无参的方法

@Before --必须是public的、返回为void、无参的方法

@After --必须是public的、返回为void、无参的方法

@BeforeClass – 必须是public的、static的、返回为void、无参的方法

@AfterClass – 必须是public的、static的、返回为void、无参的方法

?

泛型

泛型概述

?

1 数组与集合

  Java中可以定义任意类型的属性,例如String[]中存放的就是String类型的数据,我们称之为持有String类型的数组。但1.5之前时,Java的集合类却只能持有Object类型,1.5时添加了泛型的概念,泛型允许Java创建持有任意类型的集合对象,例如:new ArrayList<String>()表示这个ArrayList中只能持有String类型的对象。

?

2 类型变量(参数)

具有一个或多个类型参数的类就是泛型类。

泛型类都至少有一个类型变量,你需要在创建泛型类对象时给类型变量赋值。当然,你要给类型变量赋的值必须是一个类型!

ArrayList<String> arr = new ArrayList<String>();

其中String就是给ArrayList类的类型变量赋值。在ArrayList类中所有使用类型变量的地方都会被String所替换。例如:boolean add(E e),其中e的类型就是变量,它会被String替换,最终变成boolean add(String e)。E get(int index)方法中返回值的类型为变量,它也会被String替换,最终变成String get(int index)。

?

3 泛型的好处

将运行期遇到的问题转移到了编译期。例如在1.4时,ArrayList类的add()方法参数还是Object类型,当然get()方法的返回值类型也是Object。这就说明使用get()方法获返回值后,你还需要强转。错误的强转可能会出现ClassCastException。

ArrayList list = new ArrayList();

list.add("hello");

Integer i = (Integer)list.get(0);//抛出异常

?

这个问题在有了泛型之后就不会再有了。

ArrayList<Integer> list = new ArrayList<Integer>();

list.add("hello");//编译出错!

Integer i = (Integer)list.get(0);

?

  很明显,是泛型把只能在运行时才能找到的错误推向了编译期!这就是泛型的优点!!!

?

定义泛型类(接口)

?

1 自定义泛型类的语法

自定义泛型类的语法基本与定义正常的法一样:

public class A<T> {}

定义泛型类时,需要在类名后面给出一对尖括号,在尖括号中给出1~N个类型变量。

?

2 泛型类中使用类型变量

用户在使用泛型类时,需要为类型变量赋值。例如:new A<String>()。

在泛型类中可以使用类型变量:

Day07 jdk5.0新特性&Junit&反射

时间: 2024-10-26 12:25:03

Day07 jdk5.0新特性&Junit&反射的相关文章

day07 MyEclipse 安装 jdk5.0 新特性

1.myeclipse的安装和使用 * eclipse:是一个免费的开发工具    * myeclipse:是一个收费的插件,破解myeclipse,        ** 安装目录的要求: 不能有中文和空格        ** 安装完成之后,选择一个工作空间 ,这个工作空间不能有中文和空格    * 破解myeclipse        ** 运行run.bat文件,但是运行之前,必须要安装jdk,通过配置环境变量 * myeclipse的使用        * 创建一个工程          

Java JDK5.0新特性

JDK5.0新特性 虽然JDK已经到了1.8 但是1.5(5.0)的变化是最大的 1. 增强for循环 foreach语句 foreach简化了迭代器 作用: 对存储对象的容器进行迭代 (数组, collection, map) 1> 格式 增强for循环括号里写两个参数 第一个是声明一个变量 第二个就是需要迭代的容器 for( 元素类型 变量名 : Collection集合 & 数组 ) { ... } 2> 增强for循环和传统for循环的区别 a. 增强for循环在使用时 必须要

JDK5.0新特性

JDK5中新增了很多新的java特性,利用这些新语法可以帮助开发人员编写出更加高效.清晰,安全的代码. 这些新特性主要有:1.静态导入2.自动装箱/拆箱3.增强for循环4.可变参数5.枚举6.泛型7.元数据 1.静态导入静态导入用于简化程序对静态属性和方法的调用 语法:Import static 包名.类名.静态属性|静态方法|*例如: import static java.lang.System.out import static java.lang.Math.* 2.自动装箱/拆箱自动装箱

JDK5.0新特性-反射

反射: 什么是反射? 剖析Java类中的各个组成部分映射成一个个java对象 为什么用反射? 多用于框架和组件,写出复用性高的通用程序 1.Class类. Class代表的就是我们的字节码文件. 三种方式. 1.类名.class 2.对象.getClass(); 3.Class.forName(); 在开发中创建使用第三种 Class.forName();为什么? 这种方式耦合度低,没有依赖性. ------------------------------------------ 2.Const

JDK5.0新特性-泛型

泛型(重点) 什么是泛型? 对数据类型进行一个限定. 应用最多的地方是集合. 为什么要使用泛型? 1.提高我们程序安全性. 2.将运行阶段的问题在编译阶段解决. 3.不用进行类型强制转换 ----------------------------------------------- 我们学习泛型的目的:会使用集合上定义的泛型. 1.集合上泛型的基本使用. //Collection<E> //List<E> //Set<E> //它们的作用是限定集合中元素的类型. 我们可

JDK5.0新特性-自动装箱/拆箱

lJDK5.0的语法允许开发人员把一个基本数据类型直接赋给对应的包装类变量, 或者赋给 Object 类型的变量,这个过程称之为自动装箱. l自动拆箱与自动装箱与之相反,即把包装类对象直接赋给一个对应的基本类型变量. l典型应用: List list = new ArrayList(); list.add(1); int j = (Integer)list.get(0); package cn.itcast.autobox; import java.util.ArrayList; import

JDK5.0新特性-静态导入

静态导入(知道) 格式:import static 包名.类名.方法名(属性名); 在类中使用这个静态成员时可以不用类名.直接写方法名或属性名就可以. 静态导入缺点: 1.代码可读性下降. 2.由于方法名的重复,静态导入在一些特定的情况下会报错. --------------------------- package cn.itcast.staticdemo; import java.util.Arrays; import org.junit.Test; import static java.u

JDK5.0新特性-可变参数

可变参数: 格式 类型... 变量 本质上这个参数是一个数组. 优点:1.传参数时可以传递数组,也可以传递多个值. 2.可以不传递值. Arrays.asList()可以将数组转换成List集合. 注意:得到的是一个固定长度的List集合. 原因:是因为数组长度是固定的,这个集合是由数组转换成的. 为什么要将数组转换成集合? 集合中提供更丰富的操作. int[] arr = { 1, 2, 3 }; List list = Arrays.asList(arr); System.out.print

JDK5.0新特性-增强for循环

============== 增强for循环 它的底层实现就是使用Iterator. 什么样的容器可以使用增强for?-----------Iterable 增强for的缺点:只能进行遍历,不能进行在遍历过程中的操作. 增强for的格式 for(类型 引用:容器){ } -------------------------------------------- 关于对集合的遍历. List 1.Iterator 2.增强for 3.普通for 4.ListIterator Set 1.增强for