A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 郝佳轩 中级黑马   /  2015-8-31 22:06  /  590 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

静态导入

自动装箱、拆箱

增强for循环

可变参数

枚举

泛型

元数据

断点:

f5:step into

f6:step over

f7:step return

ctrl+1:快速修复

ctrl+shift+x:变大写

ctrl+shift+y:变小写

ctrl+alt+向下键:复制行

alt+向上、向下键:向上、向下移

ctrl+T:查看继承关系

ctrl+shift+T:查看源代码

ctrl+shift+L:查看所有快捷键

用Junit对类进行测试:要加注解@Test、@before{可以用于初始化资源}、@after{销毁资源}

断言:Assert.

drop to frame:   跳到当前方法第一行

resume:跳到下一个端点(如果没有下一个,则运行完整个程序)

watch:观察变量或表达式的值

断点注意的问题:

1、  断点调试完成后,要在breakpoints视图中清除所有断点;

2、  断点调试完成后,一定要记得结束运行断点的jvm

取集合值的几种方式:

publicclass javaweb01 {

    @Test

    publicvoid test(){

       Map map = new LinkedHashMap<String, String>();

       map.put("1", "sdhdh");

       map.put("2", "dqd");

       map.put("3", "fag");

/*     Set set = map.keySet();

       Iterator it=set.iterator();

       while(it.hasNext()){

          String key=(String) it.next();

          String value=(String) map.get(key);

          System.out.println(key+"="+value);

       }*/

       Set set = map.keySet();

       for(Object obj:set){

          String key=(String) obj;

          String value=(String) map.get(key);

          System.out.println(key+"="+value);

       }

    }

    @Test

    publicvoid test2(){

       Map map = new LinkedHashMap<String, String>();

       map.put("1", "sdhdh");

       map.put("2", "dqd");

       map.put("3", "fag");

       /*Set set=map.entrySet();

       Iterator it=set.iterator();

       while(it.hasNext()){

          Map.Entry entry=(Entry) it.next();

          String key=(String) entry.getKey();

          String value=(String) entry.getValue();

          System.out.println(key+"="+value);

       }*/

       for(Objectobj:map.entrySet()){

          Map.Entry entry=(Entry) map.entrySet();

          String key=(String) entry.getKey();

          String value=(String) entry.getValue();

          System.out.println(key+"="+value);

       }

    }

使用增强for循环,只适合取数据,要修改数组或集合中的数据,要用传统方式!

枚举类特性:

枚举也是一种特殊形式的java类

枚举类中声明的每一个枚举值代表枚举类的一个实例对象

与java中的普通类一样,在声明枚举类时,也可以声明属性,方法和构造函数,但枚举类的构造函数必须是私有的

枚举类也可以实现接口,或继承抽象类

JDK5还扩展了switch语句,它除了可以接收int、byte、char、short外,还可以接收一个枚举

若枚举类只有一个枚举值,则可以当做单例设计模式

枚举的常用方法:name()--返回枚举名,ordinal()--返回枚举位置号,valueof()--将字符串转成枚举值,values()--用于返回枚举的所有枚举值,返回一个枚举类型的数组!

反射:反射就是加载类,并解剖出类的各个组成部分(成员变量、方法、构造方法)

主函数的反射:

反射类的构造函数,建立对象、函数(主函数)、字段

Class clazz=Class.forName(“  ”);

Method method=clazz.getMethod(“main”,String[ ].class);

method.invoke(“null”,(Object[ ])(new String(“aaa”,”ghj”)));//拆就让你拆个够

//method.invoke(“null”,(Object)(new String(“aas”,”dsf”)));方老师的话说叫“欺骗”

反射字段:

Person p=new Person( );

Class clazz=Class.forName(“   ”);

Field f=clazz.getField(“name”);

String name=(String)f.get(p);

System.out.println(name);

内省操作:

实例:

publicclass Test1 {

   

    @Test

    publicvoid test1()throws Exception {

       BeanInfo info=

Introspector.getBeanInfo(Person.class,Object.class);

       PropertyDescriptor[] pds=info.getPropertyDescriptors();

       for(PropertyDescriptor pd:pds){

          System.out.println(pd.getName());

       }

    }

    @Test

    publicvoid test2()throws Exception{

       Person p=new Person();

       PropertyDescriptor pd=new PropertyDescriptor("age", Person.class);

                           //pd.getPropertyType();获得属性类型

       Method method=pd.getWriteMethod();

       method.invoke(p, 45);

       System.out.println(p.getAge());

    }

}

BeanUtils—支持八种基本数据类型(需要的是byte、char、short、int、long、float、double、boolean可以直接转



2 个回复

倒序浏览
不错,不错
回复 使用道具 举报
还真不知道元数据是什么
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马