现在的位置: 首页 > 综合 > 正文

黑马程序员__类Class

2014年01月28日 ⁄ 综合 ⁄ 共 2292字 ⁄ 字号 评论关闭

----------------------android培训java培训、期待与您交流!
----------------------------------------

大Class也是类(对对象进行描述的类,只不过它描述的对象也是class而已)
 自己认为大Class相当于反编译出对应class的各成分,分别用Class中的方法区装饰
 每个字节码文件都是Class的实例对象。//字节码:javc编译成的.class文件,被加载进内存后可创建其描述的实例对象。

 

取Class对象的三种方式
   1. 使用类的.class 语法   如Person.class ,返回Person在内存的字节码。
   2. 使用对象的getClass方法 如:对象.getClass()
   3. 使用Class类的静态方法:Class.forName("类的完整名称");此时类已进内存。PS:返回指定的Class对象
  forName作用:返回字节码。1,曾经加载过,已在Jvm中,直接返回(查询)2,Jvm还没字节码,用类加载器加载缓存 进Jvm以后要得到字节码就无需加载了(加载)PS类加载器能把.class文件加载进内存,也能加载一般文件。

Class cl=A.class; JVM将使用类A的类装载器,将类A装入内存(前提是:类A还没有装入内存),不对类A做类的初始化工作.返回类A的Class的对象
2)Class cl=对象引用o.getClass();返回引用o运行时真正所指的对象(因为:儿子对象的引用可能会赋给父对象的引用变量中)所属的类的Class的对象
3)Class.forName("类名"); 装入类A,并做类的初始化.

 

Class中方法:
 .isPrimitive()  指定对象是否为基本类型。
 .TYPE()包装类包装的基本类型  如Integer.TYPE()==int.Class

Constractor(构造方法)类: .getConstruction(XX.Class)获得某种构造方法  .newInstance()创建实例对象
获得对象必须通过构造方法,如果想获得无参构造方法的对象,可以用Class类的new newInstance()

Field(字段)类: 描述class中的字段(成员变量)
 Field f = 类名.getClass().getField()  获得对应的字段对象。 f.get(类名) 找出具体对象在内存的值。

Method (方法):代表字节码中的方法。(也即把字节码中所以方法收集到了一块,用时根据不同的参数字节码应用,有点像搜索)
//str1.charAt(1);             str1="abc"

Method methodCharAt = String.class.getMethod("charAt", int.class);
//int.class是要搜索出参数类型为int的方法,就根据int.class找出基本数据类型的参数
System.out.println(methodCharAt.invoke(str1, 1));//基本方法是:对象.方法();反射反着: methodCharAt(对象,1);对象作为参数传递了。invoke:援引。援引上面的那个搜索到的方法。

 printObject(arr1);//String [] arr1=new String[]{"a","b","c"};(Object[] a=new Object(String、int均可))

 private static void printObject(Object obj)
  {
  Class clazz = obj.getClass();//获取arr1的字节码对象
  if(clazz.isArray())//判断字节码对象是否是数组
  {
   int len = Array.getLength(obj);//用工具类Array.getLength获取arr1长度
   for(int i=0;i<len;i++)
   {
    System.out.println(Array.get(obj, i));
   }
  }
  else//如果不是数组,打印出其哈希值
  {
   System.out.println(obj);
  }
  
 }

基本数据类型的一维数据可以被当做Object类型使用,但不可以当Object[]使用,非。。。。即可。。。又可。。。
具有相同维数和元素类型的数组属同一类型,即具有相同的Class实例对象。
二维数组就是数组的数组

List集合是数组结构,可放重复元素,和int[]类似
HashSet是哈希表机构,存放元素引用时根据对象哈希值先比较对象地址(与元素内参数有关)是否相同,若同还会(需复写equals)比较次要条件
如果一个对象存进HashSet后,不可以对其参与hashCode方法的属性进行修改。因为修改后hashCode的值会改变,从而造成HashSet不能对其进行操作,造成内存泄漏。

Properties:
 void  X.load(InputStream)从输入流读取键值对。
 String   X.getProperty(key)返回key对应的值。
单词:property:性能,特性 properties:道具  descriptor:描述 invoke:援引

 

----------------------android培训java培训、期待与您交流!
----------------------详细请查看:
http://edu.csdn.net/heima(日记必用代码)

抱歉!评论已关闭.