- ==与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));
}
}
==的引用比较,比较的是堆内存地址,这里要区分堆内存与栈内存。
栈内存存放变量的名称,而堆内存存放的是变量的地址。
在字符串中==与equals()的区别
- ==比较的是堆内存地址是否相同
- 而equals()比较的是两个字符串的内容
- 重载与重写的区别
- 重写
- 参数类型不能变,返回值类型也不能变
- 声明为final的方法不能被重写
- 声明为static的方法不能被重写
- 构造方法不能被重写
- 重写时,子类调用父类被重写的方法,用super关键字,例如super.move()
- 重载
- 必须改变参数列表,返回值类型可以不同
- 接口与抽象类的区别
-
接口Interface
- 变量:隐式指定为public static final,且必须赋予初值
- 方法:成员方法隐式指定为abstract、public类型的方法,所有方法不能有具体的实现
- 实现:一个类可以实现多个接口
-
抽象类Abstract
- 变量:可以有自己的成员变量
- 方法:
- 抽象方法隐式指定为public或者protected
- 可以有非抽象方法
- 实现:
- 一个类只能继承一个抽象类