JAVA-WEB总结01

1 工具常用的快捷键
  1) Eclipse和MyEclipse,IBM,2001,Java编写,开源,跨平台跨语言
  2)Alt+/快速内容提示(自己习惯定义)
  3)Ctrl+1快速修补错误
  4)Syso+Alt+/快速显示System.out.println()语句 
  5)Ctrl+Shift+F快速排版正确代码
  6)Ctrl+Shift+X转大写,Ctrl+Shift+Y转小写
  7)Ctrl+Shift+O一次性导入多个包
  8)Ctrl+/加或减单行注释
  9) Ctrl+Shift+/加多行注释,Ctrl+Shift+\取消多行注释
 10) 选中行+Alt+上下光标键移动行

2 使用断点调试程序,使用Junit测试程序
  1)通过断点方式调式程序的每个步骤  
  2)Step over查看代码粗粒度执行过程
  3)Step into查看代码细粒度执行过程
  4)@Before和@After会在@Test方法执行前后各执行一次
  5)@BeforeClass和@AfterClass是在类前后各执行一次
  
*3 静态导入和自动装拆箱
  1)静态导入可以导入对象,属性,方法,*
  2)语法:
import static java.lang.Math.PI;
import static java.lang.Math.pow;
import static java.lang.System.out;
  3)在JDK5中,编译器自动将基本类型和对应的包装类型,自动转换  
例如:int<->Integer

*4 增强for循环(foreach)
  1)循环迭代数组/List/Set/Map集合
     List:  List list = new ArrayList();
list.add("jack");
list.add("marry");
list.add("sisi");
for(String name : list){
System.out.print(name+"\t");
}
     Set:   Set set = new HashSet();
set.add(100);
set.add(200);
set.add(300);
Iterator it = set.iterator();//Iterator为迭代器
while(it.hasNext()){
Integer key = it.next();
System.out.print(key+"\t");
}
  2)对Map集合的二种迭代方式:
a)keySet()
           Map map = new HashMap(); 
 map.put(100,"jack"); 
 map.put(200,"marry"); 
 map.put(300,"sisi"); 
 Set set = map.keySet();
 Iterator it = set.iterator(); 
 while(it.hasNext()){ 
 Integer key = it.next();
  String value = map.get(key); 
  System.out.println(key+"-"+value); }
b)entrySet()
Map map = new HashMap(); 
 map.put(100,"jack"); 
 map.put(200,"marry"); 
 map.put(300,"sisi"); 
 Set> set = map.entrySet();
Iterator> it = set.iterator();
 while(it.hasNext()){ 
Entry entry = it.next();
  Integer key = entry.getKey();
  String value = entry.getValue();
System.out.println(key+"<->"+value);}
  3)在迭代集合时,一定要动态通知Iterator,而不要动态通知List集合,应选用ListIterator。
ListIterator it = list.listIterator();
*5 可变参数
  1)参数的个数不确定的
  2)可变参数只能放置在参数的最后,即最右边
  3)可变参数最少0个,最多1个
  4)编译器将可变参数当作一个一维数组来对待

*6 枚举
  1)当取值是某范围中的之一,这时可以使用枚举
  2)当向用户提示严重的错误时,尽可以使用抛异常的方式通知客户端
  3)可以对枚举在运行时验证 
  4)可以对枚举在编译时验证
  5)枚举值相当于实例变量 
  6)枚举类与普通一致,可以继承或实现,如果有抽像方法的话,可以利用每个枚举值以匿名内部类的方式去实现
  7)枚举值可以用在switch()语句中
  8)枚举类常用方法如下:
a)name():显示枚举值
b)ordinal():显示枚举值对应的索引,从0开始
c)values():取得该枚举类对应的所有枚举值,是一个数组
d)valueOf():判段某个字符串是否属性枚举值之一

*7 反射
  1)解析一个类的各个部分,形成一个对象。
  2)外存中的类,加载到内存中,会形成该对象的Class类,例如:String类,加载到内存中,就是StringClass对象。
  3)使用不同的方式,取得同一个类型的字节码对象Class是相同的。
      类名.class Class c1 = String.class;
        对象.getClass()   Class c2 = new String().getClass();
        Class.forName() Class c3 = Class.forName("java.lang.String");
  4)通过getXxxxx()只能取得该类public的类型
    通过getDeclaredXxxxxx()可以取得该类非public的类型
    设置非public类型的可访问性,默认为false,不可访问
      c.setAccessible(true); 
  5)反射可以反射private/public的构造方法,字段,普通方法
  6)在反射main方法时,编译器会将数组自动拆分,取第一个值
    解决方案:
//m.invoke(null,(Object)new String[]{"A","B","C","D"});,将数组当作对象,此时编译器不进行拆分
m.invoke(null,new Object[]{new String[]{"A1","B1","C1","D1"}});在数组中嵌入另一个数组

 7.总步骤
    ①取得Person类对应的字节码对象Class
    Class clazz = Class.forName("cn.itcast.java.reflect.Person");
    ②取得该类的唯一构造方法
      //Constructor c  = clazz.getConstructor(null);
     //Constructor c = clazz.getConstructor(String.class,int.class);
      Constructor c = clazz.getDeclaredConstructor(null);
     ③创建实例
//Person p = (Person) c.newInstance(null);
        //Person p = (Person) c.newInstance("berry",10);
     ④ 设置非public成员的访问性,默认false即不可访问性
         c.setAccessible(true);
     ⑤ 执行方法
 p.show();

posted on 2013-08-05 20:28  我就要超鬼  阅读(144)  评论(0编辑  收藏  举报

导航