相关疑难解决方法(0)

Java中==和equals()之间有什么区别?

我想澄清一下我是否理解正确:

  • == - >是参考比较,即两个对象都指向相同的内存位置
  • .equals() - >计算对象中值的比较

我的理解是正确的吗?

java identity equality object-comparison

592
推荐指数
12
解决办法
62万
查看次数

使用.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",为什么它是错误的?

java methods class equals object

73
推荐指数
5
解决办法
36万
查看次数

由于java中的继承而创建了多少个对象?

假设我有三个班级:

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()方法是否在内部创建了一个对象?我所知道的是,构造函数也是一种方法(我可能错了).

我的问题是:

  1. 在这种情况下创建了多少个Object?
  2. 如果创建了一个对象,那么Super()内部如何调用父类构造函数?

java constructor object

54
推荐指数
3
解决办法
1万
查看次数