Class & Object

Class & Object

  • Class

    • 记录类的类型信息

    • 类加载时候jvm为当前类生成Class创建对象,该对象存储再堆中

    • 该类的实例需要通过此class对象进行实例化

    • Class对象由jvm创建 <因为Class有一个私有的构造函数>

    • 作用: 运行时提供某个对象的类型信息

    • 提供的类型信息

      • 原子操作
      • 反射信息
      • 注解信息
    • 创建Class类的对象

      • Class.forname() 根据类名获取
      • clazz.getClass() 根据当前类的实例获取
      • ClassA.class 根据类的class获取
    • 创建Class对象的实例

      Class c = Class.forName("ClassA");
      			System.out.println(c.getName());
      			ClassA a = (ClassA) c.newInstance();
      			System.out.println(a.name());
      
  • Object

    • 所有类的祖先

    • 一共13个方法,9个子类可以访问,没有属性

      public方法

      clone 
      	浅复制,实现cloneable接口
      	native方法
      	返回一个新的引用
      	
      	浅拷贝
      		两个对象的引用类型公用同一份内存地址,修改其中一个,两一个也会被修改
      		
      	深拷贝
        	再次动态分配内存,两个地址空间没有关联
        	拷贝时间花销大
        	
      
      finalize 
      	释放资源前调用
      	空实现
      	jvm调用  (一般不是程序员自己调用)
      
      wait 
      	该对象在当前线程上等待
        调用该方法后当前线程进入睡眠状态,直到以下事件发生。
        (1)其他线程调用了该对象的notify方法。
        (2)其他线程调用了该对象的notifyAll方法。
        (3)其他线程调用了interrupt中断该线程。
        (4)时间间隔到了。
      此时该线程就可以被调度了,如果是被中断的话就抛出一个InterruptedException异常。
      notify 唤醒当前对象监听器上的某个等待线程
      
      notifyall 唤醒当前对象监听器上的所有等待线程
      
      getclass 
      	获得运行时类型
      	native方法
      	java专门的Class类描述对象的属性
      
      
      equals
      	内容比较
      	== 基本类型直接存储值,引用类型存储对象的地址  <比较的是变量的值是否相同>
        equals 比较内容完全相同
      
      hashcode 
      	常常伴随equals一起重写
      	对象的hashCode()返回的不是对象所在的物理内存地址。甚至也不一定是对象的逻辑地址
      	hashCode()相同的两个对象,不一定相等,换言之,不相等的两个对象,hashCode()返回的哈希码可能相同。
      因此,在上述代码中,重写了equals()方法后,需要重写hashCode()方法。
      
      
      tostring
      	由对象的类型和其哈希码唯一确定
      	同一类型但不相等的两个对象分别调用toString()方法返回的结果可能相同。
      

      整理自网络

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值