欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Javaweb知识点

程序员文章站 2024-01-29 14:29:34
...

啦啦啦啦

JavaWeb笔记

1.增强for循环

*1使用场景

       1.数组遍历
       2.实现了Iterable接口的集合(Set , List------Map没有实现Iterable接口,所以不能使用增强for循环)

*2使用目的

      1.为了替换Iterator,即为了替代迭代器(增强for循环的底层就是由迭代器来实现的,所以他可以替代迭代器)

*3使用语法

      for(数据类型  变量名:遍历的集合名)

2.可变参数

*1.使用場景

      1.当多个方法的逻辑相同,只是参数个数不同时,可以使用可变参数作为 方法的参数

*2.使用方法

      1.在方法的参数列表中   数据类型...数组名称(即数据类型后紧跟英文状态下的三个点,然后再跟一个数组名称,这个数组是自动创建用于接收传入的可变参数的,不用人为再去定义,且名称可以随意取)         

*3.注意事项

      1.可变参数只能定义在一个方法的参数列表中,不能在其他地方定义
      2.方法的参数列表中可变参数只能有一个,且只能位于参数列表的最后(因为方法还可以定义其他的参数)

3.反射

*1反射原理

1.框架的实现

就是基于反射的,而框架的开发都是基于配置文件的开发,配置文件中配置了类,通过反射可以获取到那些类中的所有内容,如类中的所有方法,属性等,然后通过类中的方法来执行
***获取属性通过Filed类来完成
***获取构造方法通过Constructor来完成
***获取普通方法通过Method方法来完成

2.反射的原理

     1)将编写好的代码保存到本地硬盘,保存为.Java文件
     2)通过编译,保存为.class文件
     3)在Java的虚拟机(jvm)中,通过类加载器把class文件保存在内存中(class文件,在内存中为class类)
     4)使用反射时,先获取到类,然后就能获取到类中的所有内容

3.使用反射操作无参构造函数

    1)先获取class类,方法有4种:
        a.类名。class
        b.对象名.getclass();
        c.class.forname("类的路径");
        d.包装类.TYPE;(不常用)
        语句:Class c=Class.forName("类的路径");
    2)获取1)中类的实例(比如一个Person类)
       语句:Person p=(Person)c.newInstance();//因为调用newInstance方法的返回值为Object类型,所以强转;
       //对类进行实例化,除了使用new,还可以使用newInstance()方法
    3) 使用set方法设置值
    语句:p.setName("名字");
    4)输出,需使用get方法获取设置的name值
    语句:System.out.println(p.getName);

4.使用反射操作有参构造函数

    1)先获取class类,方法有4种:
        a.类名。class
        b.对象名.getclass();
        c.class.forname("类的路径");
        d.包装类.TYPE;(不常用)
        语句:Class c=Class.forName("类的路径");
    2)使用1)中的类名来获取其对应的有参构造函数
    语句:c.getConstructors();//获取所有的构造函数,如果是有参的构造函数,则在参数列表中传递对应的参数
    如:c.getConstructor(String.class,String.class);//.class为利用反射
   3)设置值
   由于是有参构造函数,所以在实例化时即可设置初值
   语句:Person p=(Person)c.newInstance("张三",“23”);
   4)获取值
   也是使用实例名.get方法
   如:p.getName();

5.使用反射操作属性

   1)获取class类
   2)获取类的实例
   3)利用类名获取属性
   语句:Field f=c.getDeclaredField("属性名")//getDeclaredField()此方法可获取属性,参数即属性名
   4)设置值,同样利用set()方法,但是此时有两个参数,参1为实例名,参2位设置的属性值
   语句:f.set(p,"属性值");
   5)获取值,用get()方法,参数为实例名
   语句:f.get(p);

6.使用反射操作普通方法

   1)获取class类
   2)获取类的实例
   3)得到普通方法:类名.getDeclaredMethod(方法名,通过方法想要设置的属性类型);
   语句:Method m=c.getDeclaredMethod("setName",String.class)
   4)设置值,利用invoke(实例名,参数值)
   语句:m.invoke(p,"zhangsan");
   5)获取值,get方法
   如:实例名.getName();