我想澄清一下我是否理解正确:
== - >是参考比较,即两个对象都指向相同的内存位置.equals() - >计算对象中值的比较我的理解是正确的吗?
我用一个String字段构建了一个类.然后我创建了两个对象,我必须使用==运算符进行比较.equals().这就是我所做的:
public class MyClass {
String a;
public MyClass(String ab) {
a = ab;
}
public boolean equals(Object object2) {
if(a == object2) {
return true;
}
else return false;
}
public boolean equals2(Object object2) {
if(a.equals(object2)) {
return true;
}
else return false;
}
public static void main(String[] args) {
MyClass object1 = new MyClass("test");
MyClass object2 = new MyClass("test");
object1.equals(object2);
System.out.println(object1.equals(object2));
object1.equals2(object2);
System.out.println(object1.equals2(object2));
}
}
Run Code Online (Sandbox Code Playgroud)
编译后,结果显示两次false.如果两个对象具有相同的字段 - "test",为什么它是错误的?
假设我有三个班级:
class A {
A() {
// super();
System.out.println("class A");
}
}
class B extends A {
B() {
// super();
System.out.println("class B");
}
}
class C extends B {
public static void main(String args[]) {
C c = new C(); //Parent constructor will get called
}
}
Run Code Online (Sandbox Code Playgroud)
当我创建一个C类实例时,它会调用超类的构造函数.那么,是否有多个对象被创建?如果只创建了一个对象,那么super()和另一个类的构造函数如何?super()方法是否在内部创建了一个对象?我所知道的是,构造函数也是一种方法(我可能错了).
我的问题是: