【答疑解惑】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 条评论
登录 后参与评论

相关文章

来自专栏everhad

算法:排序

一些约定 java命令行程序 算法的学习和语言无关,下面使用一个java命令行程序来作为实例程序。 一个算法一个类 排序算法使用一个方法就可以表示,不需要是...

1746
来自专栏python学习之旅

Python笔记(十六):迭代器

    iterable对象(可迭代的对象):可以使用for循环,例如:字符串、列表 、字典 、集合等

592
来自专栏跟着阿笨一起玩NET

C#基础知识之方法重载总结

方法重载是指在同一个类中方法同名,参数不同,调用时根据实参的形式,选择与他匹配的方法执行操作的一种技术。

482
来自专栏蓝天

有关snprintf返回值

有关snprintf返回值更多信息,请参考:http://bbs.hadoopor.com/thread-1185-1-1.html

551
来自专栏十月梦想

字符串截取substr和substring区别?

刚才我们已经简单的了解了一下数组截取的splice和slice的区别,这篇文章来简单了解一下字符串截取的两种方式substr和substring的区别?为了数组...

1102
来自专栏Python

python join 和 split的常用使用方法

函数:string.join() Python中有join()和os.path.join()两个函数,具体作用如下: join():    连接字符串数组。将...

2016
来自专栏linux运维学习

linux学习第六十四篇:Shell脚本中的逻辑判断,文件目录属性判断, if特殊用法,case判断

Shell脚本中的逻辑判断 格式1:if 条件 ; then 语句; fi 格式2:if 条件; then 语句; else 语句; fi 格式3:if …; ...

2975
来自专栏null的专栏

python基础知识——函数

函数其实就是一段可以多次调用的代码。 1、函数的定义 格式 def 函数名(参数1[ = 默认值1], 参数2[ = 默认值2], ...): ... ...

3315
来自专栏xiaoxi666的专栏

strcpy和strcat易忽略点

571
来自专栏编程

Go语言中new和make的区别

Go语言中new和make是内建的两个函数,主要用来创建分配类型内存。在我们定义生成变量的时候,可能会觉得有点迷惑,其实他们的规则很简单,下面我们就通过一些示例...

1817

扫码关注云+社区