Javaweb知识点

啦啦啦啦

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();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值