有一些网友在学习Java基础知识是遇到一些问题小编来解答一下。
1、Java中的默认构造器:
在Java中你要创建一个对象肯定会调用new语句来创建一个对象,在new的时候会调用对象的初始化函数,默认如果你没有写构造函数的话编译器会自动给你创建一个无参的构造函数,如果你自己写了构造函数则根据你new时候的语句调用不同的构造函数,举个例子:
class A {
private int m;
//默认构造方法
A() {
}
//重载的构造方法
A(int i) {
m = i;
}
}
A a = new A()会调用默认构造函数,A a1 = new A(1)会调用第二个你重载的构造函数。这里有个知识,如果你自己写了一个带有参数的构造器,系统不会再帮你创建无参构造器(默认构造器)。
2、Java中的equals:
equals操作的是对象objectA.equals(objectB),作用是比较两个对象是否相同。Java中所有的类都是从基类Object继承过来的,默认你在比较两个对象的时候调用的是Object类的equals方法:
public boolean equals(Object o) {
return this == o;
}
大家可以看到上面的方法比较的是两个对象的引用是否是同一个,你创建的两个对象肯定是不同的,下面的图片也正是验证了这个问题。
如果你想让v1.equals(v2)返回为true则需要在Value类中重写Object的equals方法:如下:
@Override
public boolean equals(Object obj) {
Value a = (Value)obj;
return i == a.i;
}
重写equals方法,比较的是Value的i值。
总结:
如果你还觉得回答不够彻底就直接加群问小编或者在公众号直接留言。