静态变量和实例变量的区别,抽象类和接口的异同,equals&==

静态变量和实例变量的区别

区别实例成员类成员
定义方式不同不使用static修饰的变量是实例成员使用static修饰的变量称为类变量,其本质上是一个全局变量
生命周期不同实例成员随着对象的创建而分配内存,随着对象的销毁而释放内存类成员随着类的加载而分配内存,随着类消失而释放内存。
数据存储位置不同实例成员存储在堆内存中类成员存储在方法区中(共享数据区)
调用方式不同实例成员只能被对象调用类成员可以被对象调用,还可以被类名调用
别名不同类成员也称为静态成员
初始化时机不同实例化对象时初始化类首次加载时初始化,优先于实例成员初始化
使用方式不同每一个对象都拥有自己的实例成员所有的对象共享一个类成员
调用规则不同实例方法内可以调用实例成员(实例变量、实例方法)和类成员(类变量、类方法)。类方法只能调用类方法,不能直接调用实例成员(实例变量、实例方法)。如果在类方法想调用实例成员必须创建对象,用对象去调用实例成员。
this和super的使用在实例方法内可以使用this和super关键字。在类方法内不能使用this,super关键字。

抽象类和接口的异同

区别抽象类接口
多继承子类只能继承一个直接抽象类子类可以实现多个接口
实现子类使用extends继承抽象类子类通过implements实现接口
成员1.抽象类中可以有实例成员(实例变量、实例方法) 2.静态成员(静态变量、静态方法) 3.抽象方法 4.内部类 5.抽象类中的成员方法没有default关键字修符。接口中只能有 1. 常量 2. 抽象方法 3. 有实现体的静态方法 4. 用default关键字修饰符的实现体方法 5. 内部类
成员变量修饰符抽象类中可定义变量,也可定义常量接口中只能定义常量(public static final修饰的变量)
子类实现子类在实现抽象方法时不允许缩小访问权限子类在实现抽象方法时必须指定public权限
构造函数抽象类可以有构造函数接口中不能定义构造函数
最高层类的最高层是Object接口没有最高层
相同点两者都不能实例化 都可以包含抽象方法

==和equals 的区别

  • equals是判断两个变量或者实例指向同一个内存空间的值是不是相同

  • == 若是基本数据类型,则直接比较其存储的 “值”是否相等; 若是引用类型,则比较的是所指向的对象的地址

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值