前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【答疑解惑】Java中的默认构造器和equals方法

【答疑解惑】Java中的默认构造器和equals方法

作者头像
程序员互动联盟
发布2018-03-13 16:45:41
8000
发布2018-03-13 16:45:41
举报

有一些网友在学习Java基础知识是遇到一些问题小编来解答一下。

1、Java中的默认构造器:

在Java中你要创建一个对象肯定会调用new语句来创建一个对象,在new的时候会调用对象的初始化函数,默认如果你没有写构造函数的话编译器会自动给你创建一个无参的构造函数,如果你自己写了构造函数则根据你new时候的语句调用不同的构造函数,举个例子:

代码语言:javascript
复制
 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方法:

代码语言:javascript
复制
public boolean equals(Object o) {
    return this == o;
}

大家可以看到上面的方法比较的是两个对象的引用是否是同一个,你创建的两个对象肯定是不同的,下面的图片也正是验证了这个问题。

如果你想让v1.equals(v2)返回为true则需要在Value类中重写Object的equals方法:如下:

代码语言:javascript
复制
@Override
public boolean equals(Object obj) {
    Value a = (Value)obj;
    return i == a.i;
}

重写equals方法,比较的是Value的i值。

总结:

如果你还觉得回答不够彻底就直接加群问小编或者在公众号直接留言。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2015-07-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员互动联盟 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档