静态导入 自动装箱、拆箱 增强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可以直接转
|