欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > > 文章正文

JavaSE:jdk1.5-1.6新特性笔记,javasejdk1.5-1.6

来源: javaer 分享于  点击 5678 次 点评:175

JavaSE:jdk1.5-1.6新特性笔记,javasejdk1.5-1.6


JUnit测试工具:
该类中的方法执行顺序:
setUpBeforeClass();   //初始化时调用,相当于init,只运行一次
setUp();  //每次运行测验代码时运行一次
测验代码
tearDown();   //每次运行测验代码时运行一次
tearDownAfterClass()   //结束时运行,相当于destory,只运行一次
如果要测试哪个方法,就要在该方法前加上@Test,再到测试类中运行

Junit测试工具使用:
1.建一个JUnit类,写方法调用要测试的类的方法
2.到要测试的类中,直接右击要测试的方法,运行JUnit 测试方法

JDK1.5新特性:
一、静态导入
导包:import static java.lang.math.*;
使用:abs(-1);  -->结果为1


二、自动装箱和拆箱

八大基本类型:byte、short、int、long、char、float、double、boolean
就是指将基本类型自转成对象,运算时自动将基本类型的对象自动转成基本类型进行运算
装箱:Integer i = 1;  //int类型自动转成Integer对象
拆箱:int j = i;      //将Integer对象自动转成int类型


三、增加for循环(只能用在数组或实现了iterator接口的类上),只适合从数组中取值

//List集合类取数方法
List arr = new ArrayList();
list.add(1);
list.add(2);
for(Object i : arr){
    System.out.print(i);   //每次取出arr数组的一个元素
}
//Map集合类取数方法
Map map = new HashMap();
Set set = map.entrySet();
for(Object i : set){
   Map.Entry me = (Map.Entry)i;
   me.getKey();
   me.getValue();
}


四、可变参数(可以给方法传递任意数量的参数)

即可以传数组,又可传入多个值,注意不要传基本数据类型的数组
List list = Arrays.asList(1,2,3,4,5,6);

Integer arr[] = {1,2,3,4,5,6};
List list = Arrays.asList(arr);
注意,这代码会将int数组整个转成一个对象再传进去:
int arr[] = {1,2,3,4,5,6};
List list = Arrays.asList(arr);
自定义可变参数的方法,最多只能有一个可变参数,而且要在最后面
public void  sum(int ... a){  //接受任意数量的值,a的值就是一数组
}


五、枚举(限定某个方法的接收的值为指定的值)

定义了一个枚举类
enum 类{
    A,B,C,D,E,F   //new 出了6个该类的对象,分别为A,B,C,D,E,F,此定义必须放在该类第一行
}
得到枚举类名:类.name()
得到枚举中该值处于第几个位置:类.ordinal()
得到枚举中有几个值属性:类.values()


六、反射

1.反射就是把java类中各种成分映射成对象
得到类的字节码,只装载一次,以后都用这个字节码new出新对象,下面三种方法得到的是同一个字节码:
类名.class;
new 类名().getClass();
Class.forName(类名);

2.Constructor类(构造方法对应的类)
得到该类的所有构造方法:Constructors[] cs = 类的calss.getConstructors();
得到该类的无参构造方法:Constructors    c1 = 类的calss.getConstructor(null);
得到该类的有参构造方法:Constructors    c2 = 类的calss.getConstructor(该参数的类型.class如:String.class);
用构造方法new出这个类的对象:
无参的:c1.newInstance(null);
或:类的class.newInstance();
有参的:c2.newInstance(参数值);

3.Field类(变量对应的类)
得到该类的所有公有的变量类:Field[] fs = 类的calss.getFields();
得到该类的所有变量类:Field[] fs = 类的calss.getDeclaredFields();
得到该类的指定变量名的变量类Field:Field f = 类的calss.getField(变量名);
f.setAccessible(true);  //设置后可以访问私有变量
得到此对象上的指定变量名:f.get(类对象);
得到此类所有变量名:f
给变量名赋值:f.set(类对象,值);

4.Method类(方法对应的类)
Class clazz = 类.class;
Method[] mds = clazz.getMethods();                      //得到该类所有方法
Method md = clazz.getMethod("方法名称",参数类型.class); //得到指定的方法,无参时写null
Method md = clazz.getDeclaredMethod("方法名",参数类型.class);  //暴力得到私有的方法
md.setAccessible(true);  //设置后可以执行私有方法
m.invoke(类对象,真实参数);          //执行该方法,无参时写null,当方法为静态时,对象写null


七、内省(Introspector类)--操作JavaBean

1.PropertyDescriptor pd = new PropertyDescriptor("属性名",JavaBean类.class);
Method m = pd.getWriteMethod();  //拿到了该属性的set方法
Method m = pd.getReadMethod();  //拿到了该属性的get方法
m.invoke(JavaBean对象,属性值);   //将属性值取出,就是执行get方法
Introspector类  -->拿到所有JavaBean的信息,并操作它:
BeanInfo bi = Introspector.getBeanInfo(JavaBean.class);  //拿到JavaBean信息描述
PropertyDescriptor[] pd = bi.getPropertyDescriptors();    //得到操作数组

2.BeanUtils工具包(apache开发的,操作JavaBean)
共两个包:commons-beanutils-1.8.0.jar,commons-logging-1.1.1.jar;
(1)会将传递的数据类型自动转成JavaBean属性的类型(只适只8种基本类型)
BeanUtils.setProperty(JavaBean对象,“属性名”,“属性值”);   //给该JavaBean属性赋值
(2)将其他类型转换成相应类型,要在赋值前进行注册
//自已写类型转换器
ConverUtils.register(new Converter(){
   public Object convert(Class arg0, Object value){
       转换代码;
   }
},要转的类型.class);如Date.class
//用现成的类型转换器,注册转换日期类型的转换器,当碰到日期类型时就用转换器转换此类型
ConverUtils.register(new DateLocaleConverter(),Date.class); 
BeanUtils.setProperty(JavaBean对象,"birthday",birthday);   //给该JavaBean的日期类型的属性赋值
BeanUtils.copyProperties(目标Bean类, 源Bean类);  //从源类将属性各值copy到目标属性中


八、泛型(Generic) 

1.ArrayList<E>整个称为泛型类型
<>读作typeof
E称为类型参数变量,这个E可以换成其他类型
ArrayList<Integer>中的Integer称为实际类型参数
ArrayList<Integer>整个称为参数化的类型ParameterizedType
Map集合操作数据:
Map<String,String> map = new HashMap<String,String>();
map.put("a","123");
map.put("b","456");
//将map集合中每组数据(key和value)合起来放到Set集合中的一个位置
Set<Map.Entry<String,String>> set = map.entrySet();  
for(Map.Entry<String,String> entry:set){
  entry.getKey();  //取出键
  entry.getValue();   //取出值
}

2.自定义泛型
<T>:接收任意类型的参数
有三种方式定义:
类级别泛型:当所有方法使用同一个泛型时,只作用于非静态成员
方法级别定义:
变量级别定义:
<?>是用于引用对象,不能调用与类型相关的方法
<? extends 父类>用于指定?所引用的对象类型必须是其子类,包含其父类
<? super 子类>用于指定?所引用的对象类型必须是其父类,包含其子类


九、注解(Annotation)

1.三个基本的 Annotation:
@Override: 限定重写父类方法, 该注解只能用于方法
@Deprecated: 用于表示某个程序元素(类, 方法等)已过时
@SuppressWarnings("unchecked"): 抑制编译器警告

2.自定义 Annotation:
注解的属性只能使用原始类型,不能用包装类型
1.建一个注解类:
public @interface 类{
   String name();  //定义了注解的一个属性
   String password()  default "bbb";  //给该属性赋了默认值
   String[] arr();  //定义了注解的一个数组属性
   String value();   //如果定义了这个属性,则在引用赋值时不用写变量名
}

2.引用自已写的注解类(在要注解的类中写):
@类(name="aaa")  //给注解属性赋值
@类(password)   //引用注解属性,值使用默认值
@类(arr={"c","3"})   //给注解数组属性赋值
@类("ddd")   //给value属性赋值

3.元注解(Annotation):
元注解用于对注解进行限定的注解
@Retention:修饰Annotation的定义,规定该注解在哪个是间起作用,如运行时、编译时等
@Target:修饰Annotation的定义,规定该注解能作用在哪些范围,如类,方法等
@lnherited:修饰Annotation的定义,规定该注解可以被继承,即当注解加在接口上时,实现了此接口的子类也可以继承注解的效果

4.注解的反射:
注解类 p = Method.getAnnotation(注解类.class);  //返回该类中该方法的注解
p.value();  //得到注解类中value属性值

不用IE浏览器,自已写类访问Web资源:
URL url = new URL("http://localhost:8080/myweb/index.jsp");  //得到URL地址的URL对象
HttpUrlConnection url = (HttpUrlConnection)url.openConnection();   //得到连接上web资源的连接器
conn.getHeaderField("头字段");  //得到指定头字段
//读取web服务器资源
InputStream in = conn.getInputStream();  
byte buf[] = new byte[1024];
int len = 0;
while((len = in.read(buf)) > 0){
   打印出Web资源
}
//写数据web给服务器
conn.setDoOutput(true);   //设置客户端可以写数据给web服务器
OutputStream out = conn.getOutputStream();
out.write("属性=值".getBytes());
conn.getResponseCode();

相关文章

    暂无相关文章

用户点评