java面试题

224 阅读1分钟

如何区分重载和重写?

  • 二者的概念
  • 重载和重写的具体规则
  • 重载和重写什么时候绑定的

== 和 equals() 有什么区别?

==

== 跟类型没关系,比较的是存储的值是否相等
可以使用在基本数据类型和引用数据类型中
两个基本数据类型比较,比较的是存储的值
两个引用数据类型比较,比较的是存储的地址值
注意: == 必须保证两边变量类型一致

int i = 10;
int j = 10;
System.out.print(i == j); // true

double k = 10.0;
System.out.print(k == i); // true 自动类型提升

boolean flag = true;
System.out.print(flag == i); // 编译报错!! boolean 不能 参与 == 运算

char c = 10;
System.out.print(c == i); // true

char c1 = 'A';
char c2 = 65;
System.out.print(c1 == c2); // true

Person p1 = new Person("张三", 12);
Person p2 = new Person("张三", 12);
System.out.print(p1 == p2); // false 不是同一个对象实体

equals()

只能被引用数据类型使用
String、Date、File、包装类等都重写了Object类中的equals()方法,比较的是两个对象的“实体内容”

Person p1 = new Person("张三", 12);
Person p2 = new Person("张三", 12);
System.out.print(p1.equals(p2)); // false Obejct类的equals()是用 == 实现的

String str1 = new String("李四");
String str2 = new String("李四");
System.out.print(str1.equals(str2)); // true 重写了Object类的equals()

Date d1 = new Date(1232131L);
Date d2 = new Date(1232131L);
System.out.print(d1.equals(d2)); // true重写了Object类的equals()