首页 > 其他分享 >Object类

Object类

时间:2023-04-19 22:02:25浏览次数:24  
标签:返回 true Object equals toString 重写

Object类的使用

  • Object类是所有Java类的根父类

  • 如果在类的声明中未使用extends关键字指明其父类,则默认父类 为java.lang.Object类

public class Person {
...
}
等价于:
public class Person extends Object {
...
}

Object类中的主要结构

image.png

“==”和equals方法

  • 基本类型比较值:只要两个变量的值相等,即为true。 int a=5; if(a==6){…}

  • 引用类型比较引用(是否指向同一个对象):只有指向同一个对象时,==才 返回true。 Person p1=new Person(); Person p2=new Person(); if (p1==p2){…}

  • 用“==”进行比较时,符号两边的数据类型必须兼容(可自动转换的基本 数据类型除外),否则编译出错

  • equals():所有类都继承了Object,也就获得了equals()方法。还可以重写。

    • equals()只能比较引用类型,其作用与“==”相同,比较是否指向同一个对象。
    • 格式:obj1.equals(obj2)
  • 特例:当用equals()方法进行比较时,对类File、String、Date及包装类 (Wrapper Class)来说,是比较类型及内容而不考虑引用的是否是同一个对 象;

    • 原因:在这些类中重写了Object类的equals()方法。
  • 当自定义使用equals()时,可以重写。用于比较两个对象的“内容”是否都 相等

重写equals()方法的原则

  • 对称性:如果x.equals(y)返回是“true” ,那么y.equals(x)也应该返回是 “true”。

  • 自反性:x.equals(x)必须返回是“true”。

  • 传递性:如果x.equals(y)返回是“true” ,而且y.equals(z)返回是“true” , 那么z.equals(x)也应该返回是“true”。

  • 一致性:如果x.equals(y)返回是“true” ,只要x和y内容一直不变,不管你 重复x.equals(y)多少次,返回都是“true”

  • 任何情况下,x.equals(null),永远返回是“false” ; x.equals(和x不同类型的对象)永远返回是“false

面试题:==和equals的区别

1 == 既可以比较基本类型也可以比较引用类型。对于基本类型就是比较值,对于引用类型 就是比较内存地址

2 equals的话,它是属于java.lang.Object类里面的方法,如果该方法没有被重写过默认也 是==;我们可以看到String等类的equals方法是被重写过的,而且String类在日常开发中 用的比较多,久而久之,形成了equals是比较值的错误观点。

3 具体要看自定义类里有没有重写Object的equals方法来判断。

4 通常情况下,重写equals方法,会比较类中的相应属性是否都相等。

image.png

toString() 方法

  • toString()方法在Object类中定义,其返回值是String类型,返回类名和它的引用地址。

  • 在进行String与其它类型数据的连接操作时,自动调用toString()方法

    Date now=new Date();
    System.out.println(“now=”+now); 相当于
    System.out.println(“now=”+now.toString());
    
  • 可以根据需要在用户自定义类型中重写toString()方法

    • 如String 类重写了toString()方法,返回字符串的值。
 s1=“hello”; System.out.println(s1);//相当于System.out.println(s1.toString()); 
  • 基本类型数据转换为String类型时,调用了对应包装类的toString()方法
    • int a=10; System.out.println(“a=”+a);

标签:返回,true,Object,equals,toString,重写
From: https://blog.51cto.com/u_15977171/6207494

相关文章

  • Python fitz 'Document' object has no attribute 'convertToPDF'
    最近在自学python有个png转PDF的需求,然后网站找了下。defpng2pdf(name):imgdoc=fitz.open(name)pdfbytes=imgdoc.convertToPDF()#使用图片创建单页的PDFimgpdf=fitz.open("pdf",pdfbytes)imgpdf.save(name[:-4]+'.pdf')......
  • Unable to create an object of type 'NetcoremvcDbcontext'. For the different patt
    问题描述:我整个项目重新生成没有报错,但是用efcore迁移数据库命令:Add-Migrationinit就生成不了文件夹Migrations,并且报错:Unabletocreateanobjectoftype'NetcoremvcDbcontext'.Forthedifferentpatternssupportedatdesigntime,seehttps://go.microsoft.com/fwlink/......
  • Object.create与new操作符
    前言Object.create与new都可以用来生成一个对象,那么它们之间有什么区别和联系呢分析先看一下用法,很明显可以看出,new是生成一个基于构造函数生成一个新对象,而Object.create是基于某个对象,将这个对象作为原型链实现的一个新的空对象。functionO(a){this.a=a;}const......
  • java如何将JSONObject转成实体对象
    importcom.google.gson.Gson;importorg.json.JSONObject;//...JSONObjectjson=newJSONObject("{\"name\":\"JohnSmith\",\"age\":30}");Gsongson=newGson();Personperson=gson.fromJson(json.toString()......
  • Java-Day-10(Object 常用类 + JDK 源码 + 断点调试)
    Java-Day-10Object常用类equals方法==与equals==是一个比较运算符既可以判断基本类型,又可以判断引用类型如果判断基本类型,判断的是值是否相等如果判断引用类型,判断的就是地址是否相同,即判断是否是一个对象equals是Object类中的方法,只能判断引用类型默认......
  • 01-Object、常用API
    01-Object类、常用APIObject类概述在Java中,Object类是所有类的根类,它位于Java类继承体系的最顶层。所有的Java类都直接或间接地继承了Object类,因此Object类中包含了一些在Java编程中非常常用的方法。常用方法以下是一些Object类中常用的方法:equals(Objectobj)publicbool......
  • in pyvis I always get this error: "AttributeError: 'NoneType' object has no attr
    inpyvisIalwaysgetthiserror:"AttributeError:'NoneType'objecthasnoattribute'render'"SolutionWheninitializingtheNetwork,Iaddednotebook=True,thisfixedtheissueforme.Thenewcodeis:frompyvisimportne......
  • JS中Map、WeakMap和Object的区别
    JavaScript中的Map、WeakMap和Object都是用于存储键值对的数据结构:1.Map:Map是一种新的数据结构,它允许使用任何数据类型(包括对象和基本数据类型)作为键。Map的一些特性包括:-保持键的插入顺序:当遍历Map时,键值对会按照插入顺序返回。-键可以是任意类型:与Object不同,Map的键可以......
  • MFC-GetObject获取对象信息
    获取位图信息BITMAPbm;HBITMAPhBmp=NULL;CStringstr=_T("D:\\1.bmp");hBmp=(HBITMAP)::LoadImage(NULL,str,IMAGE_BITMAP,0,0,LR_LOADFROMFILE);intn=::GetObject(hBmp,sizeof(BITMAP),(PSTR)&bm);//获取对象信息/*......
  • g_dbus_connection_register_object
    /***g_dbus_connection_register_object:*@connection:A#GDBusConnection.*@object_path:Theobjectpathtoregisterat.*@interface_info:Introspectiondatafortheinterface.*@vtable:A#GDBusInterfaceVTabletocallintoor%NULL.*@user_data:Da......