黑马程序员Java基础加强17-24学习日记

1,Java类用于描述一类事物的共性,该类事物有什么属性,没有什么属性,,至于这个属性的值是什么,则是由这个类的实例对象来确定的,不同的实例对象有不同的属性值,Java程序中的各个Java类用一个类来描述,这个类就是Class,Class类描述类的名字,类的访问属性,类所属于的包名,字段名称的列表,方法名称的列表,等等。

2,得到各个实例对象对应的字节码有三种方法:(1),类名.class,例如,System.class  (2),对象.getClass(),例如,new Date().getClass  (3),Class.forName("类名"),例如,Class.forName("java.util.Date")

3,Class.forName()的作用是返回字节码,返回的方式有两种,第一种字节码已经被加载过, 由java虚拟机直接返回,第二种是java虚拟机还没有字节码,则又类加载器加载,然后返回字节码。

4,有九个预定义的Class实例对象:八个基本数据类型各自对应一个Class实例对象,加上一个void对应的CLass实例对象。 int.class==integer.TYPE,数组类型的Class实例对象用的方法是Class.isArray()。

5,只要是在源程序中出现的类型,都有各自的Class实例对象,例如,int[],void……

6,反射就是把Java类中的各种成分映射成相应的java类。

7,一个类中的每个成员都可以用相应的反射API类的一个实例对象来表示,通过调用Class类的方法可以得到这些实例对象

8,Constructor类代表某个类中的一个构造方法,得到某个类所有的构造方法。

得到某个类所有的构造方法:

Constructor []constructors=Class.forName("java.lang.String").getConstructors();

得到某一个构造方法:

Constructor constructor=Class.forName("java.lang.String").getConstructor(StringBuffer.class);


9,创建实例对象,

通常方式:

String str=new String(new StringBuffer("abc"));

反射方式:

String str=(String)constructor.newInstance(new StringBuffer("abc"));


10,Class.newInstance()方法:

String obj=(String)Class.forName("java.lang.String").newInstance();

该方法可得到类内部默认的构造方法。

11,Field类代表某个类中的一个成员变量,得到的Field对象是对应到类上面的成员变量。

12,Methode类代表某个类中的一个成员方法,得到类中的的某一个方法,例子:

Method charAt=Class.forName("java.lang.String").getMethod("charAt",int.class);

通常调用方式:

System.out.println(str.charAt(1));

反射调用方式:

System.out.println(charAt.invoke(str,1));


13,如果传递给Method对象的invoke()方法的一个参数为null,说明该Method对象对应的是一个静态方法。

14,具有相同维数和元素类型的数组属于同一个类型,即具有相同的Class实例对象。

15,代表数组的Class实例对象的getSuperClass()方法返回的父类为Objec类对应的Class。

16,基本类型的一维数组可以被当作Object类型使用,不能当作Object[]类型使用;非基本类型的一维数组,既可以当作Object类型使用,又可以当作Object[]类型使用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值