知识点一:Junit的使用(有四个类Person.class、PersonTest.class、PersonTest1.class、PersonTest2.class)
先写个Person类:
- public class Person {
- public void run()
- {
- System.out.println("run.....");
- }
- public int[] array()
- {
- return new int[]{1,2};
- }
- public int speak()
- {
- return 12;
- }
- public void eat()
- {
- System.out.println("eat.....");
- }
- }
PersonTest:
为Person类写两个测试方法testRun和testEat,需要有@Test注解,并且要引入相关包。我们看到在开头和结尾有两个方法,分别是bfore和after(方法名可以自定义),它们的注解分别是@Before和@Afterj,这两个方法会在每个测试方法运行前后都执行一次,用来给测试方法中所需要的资源进行初始化和释放资源,例如下面可以将pp的初始化放在before,释放放在after中。而不必在每个测试方法中都写Person pp=new Person(),如果有几百个测试方法,那么再这样写就是灾难。所以放在@Before注解的方法中最合适了,最后在@After注解的方法中释放资源即可
- public class PersonTest1 {
- @BeforeClass
- public static void beforeClass()
- {
- System.out.println("beforeClass");
- }
- @Test
- public void testRun(){
- Person p=new Person();
- p.run();
- }
- @Test
- public void testEat()
- {
- Person pp=new Person();
- pp.eat();
- }
- @AfterClass
- public static void afterClass()
- {
- System.out.println("afterClass");
- }
- }
PersonTest2:
断言:用于测试需要测试的类的真实值是否是自己期望的。下面列举了Assert类中的assertEquals和assertArrayEquals方法,他们的参数第一个是期望的值,第二个参数是被测试方法的返回的实际的值.
- public class PersonTest2 {
-
- @Test
- public void testSpeak(){
- Person pp=new Person();
- Assert.assertEquals(12, pp.speak());
-
- }
-
- @Test
- public void testArray()
- {
- Person pp=new Person();
-
- Assert.assertArrayEquals(new int[]{1,2}, pp.array());
- }
-
- }
知识点二:静态导入
就是说一个类中的某个静态方法在另外一个类中频繁使用时,就可以将其静态导入(例如Arrays这个类,它里面全是静态方法,如果在另外一个类中频繁调用Arrays.asList()方法,我们就可以在所谓的“另外一个类”中静态导入这个Arrays这个类的某个或全部的静态方法)
格式:import static day1.itcast.demo.speak;
day1.itcast.demo.speak只是个例子,意思是day1.itcast包下的demo类中的speak方法
知识点三:枚举(用到了Junit)
先举个例子说明枚举是怎么来的:
枚举是1.5以后的新特性,枚举的作用:一些函数在运行时,需要传入的参数不是任意的,而是一定范围内的,下面看个例子。下面的方法是jdk1.5以前的解决方法
- public class EnumDemo {
-
-
-
-
-
-
-
-
-
-
-
-
- public void method(Argument arg)
- {
- System.out.println("枚举举例");
- }
-
-
- @Test
- public void testMethod()
- {
-
-
-
-
- Argument arg=Argument.B;
- method(arg);
- }
-
-
- public void method2(Argument1 arg)
- {
- System.out.println("枚举举例");
- }
-
-
- @Test
- public void testMethod2()
- {
- Argument1 arg=Argument1.A;
- method2(arg);
- }
-
-
- }
-
-
- class Argument{
-
- private Argument(){};
-
-
-
-
-
-
-
- public static final Argument A=new Argument();
- public static final Argument B=new Argument();
- public static final Argument C=new Argument();
- public static final Argument D=new Argument();
- }
-
- enum Argument1{
- A,B,C,D
- }
上的例子是说明枚举是怎么来的,下面具体看枚举的分析:
代码:(主要讲三点)
总结:
枚举类也是一种特殊形式的Java类
枚举类中声明的每一个枚举值代表枚举类的一个实例对象
与java中的普通类一样,在声明枚举时,也可以声明属性、方法和构造方法,但枚举类的构造函数必须为私有
枚举也可以实现接口、或继承抽象类
Jdk5中扩展了switch语句,它除了可以接收int、byte、char、short这四种基本数据类型外,还可以接收一个枚举类型
如枚举类只有一个枚举值,测可以当做单例设计模式使用
知识点四:单例设计模式
解决一个类在内存中存在一个对象。
想要保证对象的唯一性:
1.为了避免其它程序过多建立该类对象,先禁止其它程序建立该对象(将构造函数私有化)
2.还为了让其它程序可以访问到该类对象,只有在本类中,自定义一个对象
3.为了方便其它程序对自定义的对象访问,可以对外提供一个方法
具体实现方式:
1.将构造函数私有化2.在类中创建一个本类对象3.提供一个方法可以获取该对象,以便提供出去给外界使用
饿汉式:
- public class Demo {
-
- private Demo(){};
-
- private static Demo demo=new Demo();
-
- public static Demo getInstance()
- {
- return demo;
- }
-
- public static void main(String[] args)
- {
- Demo demo=Demo.getInstance();
-
- }
- }
懒汉式:对象是方法别调用是,才初始化,也叫做对象的延时加载。Demo1类进内存,对象还没有存在,只有调用了getInstance方法时才建立对象
- public class Demo1 {
- private Demo1(){};
- private static Demo1 demo=null;
- public static Demo1 getInstance()
- {
- if(demo==null)
- {
- synchronized(Demo1.class)
- {
-
-
- if(demo==null)
- demo=new Demo1();
- }
- }
- return demo;
- }
-
- public static void main(String[] args)
- {
- Demo1 demo=Demo1.getInstance();
-
- }
- }