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

有一些网友在学习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值。

总结:

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

原文发布于微信公众号 - 程序员互动联盟(coder_online)

原文发表时间:2015-07-13

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏运维技术迷

连仕彤博客[Python笔记] locals() 函数

1563
来自专栏null的专栏

python基础知识——内置数据结构(字典)

    字典是有“键-值”对组成的集合,字典中的“值”通过“键”来引用。“键-值”对之间用逗号隔开,并且被包含在一对花括号中。 1、字典的创建 格式 dicti...

3107
来自专栏码云1024

JAVA 面向对象

4516
来自专栏程序手艺人

C++之函数参数的扩展

36111
来自专栏技术专栏

Scala入门与进阶(六)- Scala 函数高级操作

1162
来自专栏运维技术迷

PHP-函数

创建函数的语法 //function创建函数的关键字 function functionName() { 要执行的代码; } 函数准则 函数的名称应该显示出他的...

3267
来自专栏数据结构与算法

20:删除单词后缀

20:删除单词后缀 总时间限制: 1000ms 内存限制: 65536kB描述 给定一个单词,如果该单词以er、ly或者ing后缀结尾, 则删除该后缀(题目保...

4224
来自专栏从流域到海域

Python的闭包(Closure)与惰性计算(Lazy Evaluation)

闭包 在一些语言中,在函数中可以(嵌套)定义另一个函数时,如果内部的函数引用了外部的函数的变量,则可能产生闭包。运行时,一旦外部的 函数被执行,一个闭包就形成...

27810
来自专栏狮乐园

javascript原型链-review

虽然现在es8都已经在预发布阶段了,但是无论发布到es几,其本身的运作原理都是一样的。

891
来自专栏咸鱼不闲

static关键字,面试经常被问到!(一)

static可以理解为全局的。 static可以修饰: 变量,方法,代码块,内部类。

3195

扫码关注云+社区

领取腾讯云代金券