Java基础知识

65 阅读1分钟
  1. ==与equals()
  • equals():比较的是对象的内容是否相等
  • ==:当比较的是基础的数据类型的时候,比较的是值;当比较的是对象的时候,比较的是堆内存地址
public class learnEquals {
    public static void main(String[] args) {
        String str1="Hello";
        String str2=new String("Hello");
        String str3=str2;
        System.out.println(str1==str2);
        System.out.println(str1==str3);
        System.out.println(str2==str3);
        System.out.println(str1.equals(str2));
        System.out.println(str1.equals(str3));
        System.out.println(str2.equals(str1));
    }
}

image.png

image.png

==的引用比较,比较的是堆内存地址,这里要区分堆内存与栈内存。

栈内存存放变量的名称,而堆内存存放的是变量的地址。

在字符串中==与equals()的区别

  • ==比较的是堆内存地址是否相同
  • 而equals()比较的是两个字符串的内容
  1. 重载与重写的区别
  • 重写
    • 参数类型不能变,返回值类型也不能变
    • 声明为final的方法不能被重写
    • 声明为static的方法不能被重写
    • 构造方法不能被重写
    • 重写时,子类调用父类被重写的方法,用super关键字,例如super.move()
  • 重载
    • 必须改变参数列表,返回值类型可以不同

image.png

  1. 接口与抽象类的区别
  • 接口Interface

    • 变量:隐式指定为public static final,且必须赋予初值
    • 方法:成员方法隐式指定为abstract、public类型的方法,所有方法不能有具体的实现
    • 实现:一个类可以实现多个接口
  • 抽象类Abstract

    • 变量:可以有自己的成员变量
    • 方法:
      • 抽象方法隐式指定为public或者protected
      • 可以有非抽象方法
    • 实现:
      • 一个类只能继承一个抽象类