学习内容
1、单元测试 junit的使用
测试对象 是类中的某个方法
使用前提: 导入jar包 注:MyEclipse中已经自带此jar包 所以不用导入。
使用:
1)注解: @Test --表示该单元进行测试
@Ignore --表示该单元不进行测试
@After --在每个方法之前运行
@Before --在每个方法之后运行
2)测试方法主体
@Test
public void 方法名(){
TestJunit 测试名称 = new TestJunit();
测试名称.被测试的方法()
}
通过为绿色,失败为棕红色
2、泛型
为什么使用泛型:
使用时,容易出现类型转化错误。
对象保存到集合中,会失去原本的类型(变为object)。
泛型解决问题方法:从入口处规定集合对象类型
泛型中 T 表示任意类型。
在泛型里写的是一个对象,是基本类型的对应包装类 。 不能写基本数据类型,
byte -- Byte
short -- Short
int -- Integer
long -- Long
float -- Float
double -- Double
char -- character
boolean -- Boolean
泛型擦除: 泛型只是在编译期出现。当编译后,泛型就不存在了
list 下:
ArrayList:
底层数据结构是数组,查询快,增删慢
线程不安全,效率高
Vector:
底层数据结构是数组,查询快,增删慢
线程安全,效率低
LinkedList:
底层数据结构是链表,查询慢,增删快
线程不安全,效率高
遍历List集合:
for
增强for: for(类型 变量名:被遍历集合名)
迭代器:
Iterator<类型> 变量名 = 被遍历集合名.iterator();
while(变量名.hasNext()){
System.out.println(变量名.next());
}
遍历set集合:
增强for 迭代器
遍历map集合:
1)获取所有的key 通过key得到value 使用get方法
Set<String> sets = map.KeySet();
for(String key : sets){
String value = map.get(key);
System.out.println(value);
}
2) 获取key和value的关系
Set<Entry<String,String>> set1 = map.entrySet();
<Entry<A,B>> 是key和value的关系
for(Entry<String,String> entry : set1){
String keyv = entry.getkey();
String valuev = entry.getValue();
System.out.println(keyv +":"+ valuev)
}
3、枚举
枚举: 在一定范围内取值,值只能是范围中任意一个。
枚举关键字 : enum 枚举类的构造方法是私有的
举例:枚举红绿灯
public class Color {
private Color3 color3;
public void test(){
this.color3 = Color3.RED;
}
}
enum Color3 {
RED,GREEN,YELLOW;
}
特殊枚举:
1)枚举类中有构造方法 构造方法带参 ,枚举实例也应带参
2)枚举类中有抽象方法 此时每个枚举实例也应该重写方法
枚举常用的方法
name(); 返回枚举名称
ordinal(); 返回枚举下标
valueOf(Class<T> enumType,String name); 得到枚举对象
valueOf(String name); 得到枚举对象数组
values(); 获得枚举对象数组
4、自动拆装箱
装箱:把基本的数据类型转化成包装类
拆箱:把包装类转化成基本数据类型
eg: Integer i = 10; 自动装箱
int m = i ; 拆箱
5、可变参数
应用场景 :
多个方法 方法逻辑相同 唯一不同的是方法的参数不同。
eg:实现两个数的相加 实现三个数的相加 实现四个数的相加
public void add1(int...nums){ //nums理解为数组,存储传过来的参数
int sums = 0;
for(int i = 0 ; i < nums.length ; i++){
sum +=nums[i];
}
}
注:
1)参数列表中只能有一个可变参数
2)可变参数必须放在参数列表最后。