位于rt.jar\java\lang\Object.class

Object类是所有Java类的根基类(Java中只有一个根基类,C++中有多个)。如果在类声明中未使用extends关键字指明其基类,则默认其基类为Object类。

所有对象,包括数组,都实现了Object类的方法。

1、toString()方法

蓝色高亮行代码等价于d.toString()。输出:d:=Dog@757aef。重写toString()方法:

2、哈希编码

3、equals()方法

例题:

public class TestEquals{
public static void main(String args[]){
Cat c1=new Cat(1,2,3);
Cat c2=new Cat(1,2,3);
System.out.println("c1==c2: "+(c1==c2));//false
System.out.println("c1.equals(c2): "+c1.equals(c2));//false
}
}
class Cat{
int colour;
int high;
int weight;
public Cat(int c,int h,int w){
colour=c;
high=h;
weight=w;
}
}

注意:都返回false。因为比较两个对象时,c1==c2比较的是地址,c1.equals(c2)默认也是如此(只有当c1,c2指向同一对象时为true)。所以应重写equals()方法。

    //重写equals()方法
public boolean equals(Object obj){
if(obj==null){
return false;
}
else if(obj instanceof Cat){
Cat c=(Cat) obj;
if(c.colour==this.colour&&c.high==this.high&&c.weight==this.weight){
return true;
}
}
return false;
}
}

  重写equals()方法后,输出c1==c2:false,c1.equals(c2):true。

  JDK提供的一些类(如String,Date等),重写了Object的equals方法,调用这些类的equals方法时,x.equals(y),当x和y所引用的对象是同一类对象且属性相等时(并不一定是相同对象),返回true,否则返回false。对于用户自定义类型,可根据需要重写equals方法。

public class TestEquals{
public static void main(String args[]){
String s1=new String("hello");
String s2=new String("hello");
System.out.println("s1==c2: "+(s1==s2));//false
System.out.println("s1.equals(s2): "+s1.equals(s2));//true
}
}

JAVA笔记7-Object类之toString方法和equals方法的更多相关文章

  1. Object类的toString方法和equals方法

    Object类 概述 java.long.Object 类是java语言中的根类,即所有类的父类.它中描述的所有方法子类都可以使用.在对象实例化的时候,最终的父类就是Object 类Object是类层 ...

  2. java数组、java.lang.String、java.util.Arrays、java.lang.Object的toString()方法和equals()方法详解

    public class Test { public static void main(String[] args) { int[] a = {1, 2, 4, 6}; int[] b = a; in ...

  3. Object、String、数组的 toString() 方法和 equals() 方法及java.util.Arrays

    public class Test { public static void main(String[] args) { int[] a = {1, 2, 4, 6}; int[] b = a; in ...

  4. Java中的class类的cast方法和asSubclass方法

    一般来说cast是转型的意思,但是学java的时间也不短了,class类居然还有cast这个方法,这里来学习一下这个cast有何用. 第一次看到这个cast是在Spring的源码中, spring-f ...

  5. java 集合 HashSet 实现随机双色球 HashSet addAll() 实现去重后合并 HashSet对象去重 复写 HashCode()方法和equals方法 ArrayList去重

    package com.swift.lianxi; import java.util.HashSet; import java.util.Random; /*训练知识点:HashSet 训练描述 双色 ...

  6. Exception 的 toString() 方法和 getMessage() 方法的区别

    Exception 的 toString() 方法和 getMessage() 方法的区别: 在开发的过程中打印错误日志时尽量使用e.toString() 方法, 因为当错误为空指针时 e.getMe ...

  7. StringBuffer类的delete()方法和deleteCharAt()方法的区别

    引言 StringBuffer类的delete()方法和deleteCharAt()方法都是用来删除StringBuffer字符串中的字符 区别 1.对于delete(int start,int en ...

  8. 为什么要重写hashCode()方法和equals()方法及如何重写

    我想写的问题有三个: 1.首先我们为什么需要重写hashCode()方法和equals()方法 2.在什么情况下需要重写hashCode()方法和equals()方法 3.如何重写这两个方法 **** ...

  9. hashCode()方法和equals方法的重要性。

    在Object中有两个重要的方法:hashCode()和equals(Object obj)方法,并且当你按ctrl+alt+s时会有Generator hashCode()和equals().我们不 ...

随机推荐

  1. Linux 基础整理

    Linux系统的启动过程大体上可分为五部分:内核的引导:运行init:系统初始化:建立终端 :用户登录系统. 用户登录 Linux的账号验证程序是login,login会接收mingetty传来的用户 ...

  2. the property “***” on could not be set to a null value

    在建立EF框架的时候,创建实体时由于部分数据库类型和.net类型不同,比如int类型,在数据库中是可空类型,而.net中是不允许的,所以创建实体的时候,数据库的int类型对应的实体类型应该为int?类 ...

  3. Rsyslog收集应用日志

    收集系统其它服务日志,在客户端node1 上操作,示例以openstack-nova 服务的日志为例: 1.先修改配置文件 /etc/rsyslog.conf,完整内容如下: [root@node1 ...

  4. nginx加php(三) 启动脚本

    不用nginx默认的方式启动nginx start_web.sh #!/bin/bash USE_FPM=1USE_HHVM=0ulimit -HSn 60000 if [ "$USE_FP ...

  5. 厉害了,ES 如何做到几十亿数据检索 3 秒返回!

    一.前言 数据平台已迭代三个版本,从头开始遇到很多常见的难题,终于有片段时间整理一些已完善的文档,在此分享以供所需朋友的 实现参考,少走些弯路,在此篇幅中偏重于ES的优化,关于HBase,Hadoop ...

  6. Java中的异常处理try catch(第八周课堂示例总结)

    异常处理 使用Java异常处理机制: 把可能会发生错误的代码放进try语句块中. 当程序检测到出现了一个错误时会抛出一个异常对象. 异常处理代码会捕获并处理这个错误. catch语句块中的代码用于处理 ...

  7. 最短meeting路线(树的直径)--牛客第四场(meeting)

    题意: 给你一棵树,树上有些点是有人的,问你选一个点,最短的(最远的那个人的距离)是多少. 思路: 其实就是树的直径,两遍dfs,dfs第二遍的时候遇到人就更新直径就行了,ans是/2,奇数的话+1. ...

  8. C语言经典100例(51-100)

    [程序51] 题目:学习使用按位与 & . 分析:0&0=0; 0&1=0; 1&0=0; 1&1=1 #include "stdio.h" ...

  9. Thinkphp5.0上传图片与运行python脚本

    这里只体现了php可以通过批处理文件调用python脚本的效果 控制器代码 访问路径为127.0.0.1/index/index/upload. index模块,index控制器,upload方法. ...

  10. day2-设置position:fixed/absolute无法使用margin:auto调整居中

    问题描述:父元素给定宽度,子元素给定宽度,设置子元素position为absolute/fixed后,无法使用margin:auto使子元素在父元素中水平居中 html代码如下: <div cl ...