Java Basic
Opened this issue · 2 comments
Draymonders commented
- 这里就存放Java基础相关的东西吧
Draymonders commented
== 和 Equals
a == b
如果a是基础类型(int, float, byte, double, long等基础类型),那么比较的是值,否则是对象类型,比对的是对象引用的地址值- equals 默认实现如下所示
public boolean equals(Object obj) {
return this == obj;
}
可以通过重写此方法来改变比较的方式
关于hashcode
此话讲的甚好
Objects that are equal (according to their equals()) must return the same hash code. It's not required for different objects to return different hash codes.
Draymonders commented
Java 接口的静态方法不会被继承
今天突然发现的,JDK的Map
是个interface
有个静态方法 of
, 然后用new HashMap<String, String>().of
会报错
发现了新大陆
A
/ \
/ \
B C
\ /
\ /
D
-
如果B和C重写从A继承的方法,那么D继承哪个方法?
-
一个类可以实现多个接口,因为接口方法是为重写而约定的;如果一个类C实现两个声明同一方法的接口A和B,则接口(A或B)的客户端将调用C中的同一方法。在Java 8中引入接口的默认方法是通过强制实现者在模糊情况下重写默认值来实现的。这是一个可接受的折衷方案,因为默认方法是防御性的(在实现者没有明确提供其他实现的情况下使用)。然而,由于编译器不能强迫您重写静态方法(静态方法本身不能被重写),所以Java中接口的静态方法的引入受到一个限制:接口的静态方法不会被继承。