1、JRE System LibraryNextAlternate JRE制定JRE路径finish完成以后,JRE System Library将变为jdk1.6.0_29。Java Compiler此时即可看到java运行环境也是6.0,如下图所示:最后在运行java程序则正常了。总结1:java build Path可修改编译器;Java compiler可修改运行时环境。2、以断点的方式查看程序问题 Debug As如果程序出现问题,最好以断点的方式去运行程序(Debug As)双击左边部分,会出现一个小蓝点,这就是断点的标志。,如下图:在要设置断点的地方双击行号左边部分,即可增加一个断点
2、,然后 右键/RunDebug AsJava Application在出现的对话框中选YES即可打开Debug视图(Perspective)清除断点(Debug视图下右上角有一个Breakpoints窗口),点击下图中圆圈的叉便可全部删除断点(remove all breakpoints)。快速查找方法:F5跳入(step into),如下图中红圈内的按钮,F6图中右边一个按钮(表示跳过此步,执行下一步)F7跳出此方法并返回开始处。选中变量右键Watch就可以查看变量值在Debug视图下,在增加断点Resume(下图中绿色三角按钮)即可直接定位到下一个断点处。最终一定要关闭断点调试。总结2:F
3、5:step intoF6:step overF7:step returnDrop to frame:跳到当前方法的第一行Resume:跳到下一个断点(如果没有下一个断点,则运行完此程序)Watch:观察变量或表达式的值。断点注意的问题:1.调试完成后,要在breakpoints中清除所有断点2.一定要结束运行断点的JVM3、配置MyEclipse的快捷键Windowpreferences输入key alt+/ :内容提示 快速修复:ctrl+1 格式化代码:ctrl+shift+F 导入包:ctrl+shift+O 向前向后:Alt + 方向键 查看方法说明:F2 更为大写:Ctrl+shi
4、ft+x 更为小写:Ctrl+shift+y 更换两行的位置:Alt+方向键 查看类的继承关系:ctrl+T 重置透视图:windowReset Perspective 列出所有的快捷键:Ctrl+shift+L 粘贴源码Attach Source若源码以文件夹形式存放时,选External Folder;若源码以文件 形式存放,则选External File。 查看源码:Ctrl+点击内容 或 ctrl+shift+T,会出现如下面板,然后在红框里边输入要查看的内容即可。 二、JDK5.0新特性 静态导入import static 包名.类名.静态属性|静态方法|* 自动装箱、拆箱eg.In
5、teger i=1; /装箱(把基本类型自动转为对象装入i变量中)int j=i; /拆箱(把对象自动转为基本类型) 增强for循环只能用在 数组、或实现Iterator、Iterable接口 的集合类上。for(变量类型 变量:需迭代的数组或集合)。因为Map没有实现Iterable接口,则Map不能直接使用for循环增强来遍历,方法:通过Iterator得到Map的每个key,在通过key,并通用map.get(key)得到key相应的值。 可变参数Class类:public Constructor getConstructor(Class. parameterTypes)Arrays类:
6、public static List asList(T. a) T是对象类型就是 传入数组的时候应传入对象数组eg: int num;不行 ,而 Integer num;就可以,因为Integer修饰的为对象类型的数组,即每一个数组元素都是对象类型。 枚举和定义枚举enum 一个枚举也可有构造函数、字段和方法带抽象方法的枚举:在创建枚举的每个对象的时候,要实现枚举中的抽象方法。枚举值相当于类的对象枚举类的特性:1.枚举类是一种特殊形式的java类;2.其中声明的每一个枚举值代表枚举类的一个实例对象;3.枚举的构造函数必须是私有的.4.枚举类也可实现接口或继承抽象类。5.JDK5.0扩展了swi
7、tch语句,它除了可接收int,byte,short,char外,还可接收枚举类型。6.若枚举类只有一个枚举值,则可当做单例模式使用。/相当于用单例模式定义了一类enum Only /class Only; /Objectjava.lang类 EnumE extends Enum常用方法:name() 名称 ,ordinal() 序号(从0开始),valueOf(Class enumType,String name),values()此方法在JDK中没有,但每个枚举类都有该方法,它用于遍历所有枚举值。 反射技术反射用在框架中。框架是基于配置文件的一个类有多个组成成分,如:成员变量,方法,构造方
8、法等。反射就是加载类,并解剖出类的各个组成成分。1.加载类:/1. forName(className)-参数必须为完整类路径,但不包括后缀名.java。Class c1 = Class.forName(javaSE.Person);/2. getClass()Class c2 = new Person().getClass();/3. XXX.clsssClass c3 = Person.class;2.剖析类:Class类中:-得到public方法getConstructor(ClassgetField(String name)getMethod(String name,Class-得到所
9、有方法,包括private方法getDeclaredConstructor(ClassgetDeclaredField(String name)getDeclaredMethod(String name, Class剖析出这些方法以后,有什么用?构造函数-初始化,创建对象字段-封装数据方法-执行某个功能反射类的构造函数利用构造函数创建对象:Constructor类中:newInstance(Object. initargs)eg1. 对于public方法 / 参数可控制你想反射的构造函数是哪个/此处得到的构造函数是 public Person(String name)-参数传入.class对象
10、Constructor con1 = c1.getConstructor(String.class); /创建Person的实例Person p1 = (Person) con1.newInstance(xxxeg2 :对于private方法通过暴力反射可以使外界访问类中的私有方法。Class c4 = Class.forName(Constructor con4 = c4.getDeclaredConstructor(List.class);con4.setAccessible(true);/暴力反射,打开private访问权限,使该私有方法可以被外界访问Person p4 = (Perso
11、n) con4.newInstance(new ArrayList();反射类的方法通过Class类中的方法getMethod(String name(方法名称),Class. parameterTypes)得到该类中方法。然后通过java.lang.reflect 类 Method中的方法:Object invoke(Object obj, Object. args)调用。eg1:注意传入的参数Person p = new Person();Class c = Class.forName( /getMethod(String name(方法名称),ClassMethod m2 = c.get
12、Method(aa2,String.class,int.class);m2.invoke(p, Lily,34);/注意第一个参数是对象,后边为可变参数,此处传入一个字符串和一个整数反射类的main方法 Test public void test5() throws Exception Person p = new Person(); Class c = Class.forName( Method m5 = c.getMethod(main, String.class); /* * m5.invoke(p,new Stringa); * 若传入参数为String数组,则会抛出异常: * java.lang.IllegalArgumentException: argument type mismatch * 因为main方法里的参数只有一个(为String类型的参数) */ m5.invoke(p,(Object)new String1 /当传入的参数为Object时,将数组转为Object,就称为了一个参数,就不会报错了 反射类的字段字段-用来封装数据Field f1 = c.getField(name/其中name是Person类中的一个字段名称O
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1