广告
返回顶部
首页 > 资讯 > 后端开发 > Python >深入理解JAVA基础类库中对象Object类
  • 284
分享到

深入理解JAVA基础类库中对象Object类

2024-04-02 19:04:59 284人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

引言 Object类是所有类、数组的父类,位于java.lang 包下也就是说,Java允许把所有任何类型的对象赋给Object类型的变量。当定义一个类时没有使用extends关键字

引言

Object类是所有类、数组的父类,位于java.lang 包下也就是说,Java允许把所有任何类型的对象赋给Object类型的变量。当定义一个类时没有使用extends关键字为它显式指定父类,则该类默认继承Object父类。
例如:


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

Object常用方法

Object 类属于java.lang包,此包下的所有类在使用时无需手动导入,系统会在程序编译期间自动导入,所以Object方法我们可以直接使用,这里就介绍几个常用方法;

toString()

功能:返回指定对象的“描述性”字符串
通常 toString 方法会返回一个“以文本方式表示”此对象的字符串,Object 类的 toString 方法返回一个字符串,该字符串由类名加标记@和此对象哈希码的无符号十六进制表示组成,Object 类 toString 源代码如下:


getClass().getName() + '@' + Integer.toHexString(hashCode())

其实可以理解为输出对象的信息,就是“自我描述”的方法,当打印改对象时,就会输出该对象“自我描述”的信息,来告诉外界该对象所有的状态信息;
测试代码:


package objectlearning;

class Person {
    String name;
    int age;
    // 默认构造器
    Person() {}
    // 有参构造器
    Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
}
public class ToStringTest01 {
    public static void main(String[] args) {
        Person p = new Person();
        System.out.println(p);
    }
}

输出结果:

objectlearning.Person@776ec8df

我们可以看到返回值是“类名+@+hashCode”,并没有真正实现描述我们想要的信息,所以一般我们使用toString类需要重写,让对象输出我们需要的信息;
测试代码:


package objectlearning;

class Person {
    String name;
    int age;
    // 默认构造器
    Person() {}
    // 有参构造器
    Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    // 重写toString方法
    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}
public class ToStringTest01 {
    public static void main(String[] args) {
        Person p = new Person("张三", 18);
        System.out.println(p);
        // 等价于: System.out.println(p.toString());
    }
}

输出结果:

Person{name='张三', age=18}

所以几乎所有情况使用toString都需要重写,而且重写越简单越好,这样获取的对象信息简介明了;
还有一点:String 类已经被SUN重写过了

equals()

在java中比较两个变量是否相等除了用 == 外,还有equals()方法;

现说一下使用情况:

  • 基本数据类型比较建议使用:==
  • 引用数据类型比较(对象和对象比较) 建议使用equals(),而且需要重写!

对于基本数据类型的比较,用 == 和equals都没有什么区别,只要两个变量值相等,就返回true,但是==更简单明了;

如果对于两个引用类型变量,只有它们指向同一个对象时,才会返回true;即比较的是引用变量的内存地址(对象的地址);
但是在实际过程中我们想要比较的是对象的内容,所以这时候就需要重写equals();

重写规则:自己定,主要看是什么和什么相等时表示两个对象相等,重写一定要彻底;

测试代码:


package objectlearning;

class Car {
    String color; // 颜色
    int speed; // 速度
    // 默认构造器
    public Car() {}
    // 有参构造器
    public Car(String color, int speed) {
        this.color = color;
        this.speed = speed;
    }

    // 重写equals方法
    public boolean equals(Car c) {
        // 如果两个对象为同一个,为真
        if (this == c) return  true;
        // 当两个对象不同时,颜色和速度相同才为真
        if (c != null) return this.color == c.color && this.speed == c.speed;
        return  false;
    }
}
public class EqualsTest01 {
    public static void main(String[] args) {
        Car c1 = new Car("绿色", 150);
        Car c2 = new Car("蓝色", 200);
        Car c3 = new Car("绿色", 150);
        System.out.println("c1和c2相等吗?" + c1.equals(c2));
        System.out.println("c1和c3相等吗?" + c1.equals(c3));
    }
}

输出结果:

c1和c2相等吗?false
c1和c3相等吗?true

同样对于equals,String类的也已经被SUN重写了,所以不需要我们再重写;

总结

这里简单介绍了一下Object类和它的两种常用方法,对于Object要记住它是所有类的爹,以及toString和equals多数情况都需要重写;后续如果有其他方法还会补充;

到此这篇关于深入理解Java基础类库中对象Object类的文章就介绍到这了,更多相关java object内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 深入理解JAVA基础类库中对象Object类

本文链接: https://www.lsjlt.com/news/136286.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 深入理解JAVA基础类库中对象Object类
    引言 Object类是所有类、数组的父类,位于java.lang 包下也就是说,Java允许把所有任何类型的对象赋给Object类型的变量。当定义一个类时没有使用extends关键字...
    99+
    2022-11-12
  • 了解java中对象基础Object类
    目录一、Object简述1、显式扩展2、引用与对象二、基础方法1、getClass2、toString3、equals与hashCode4、thread相关5、clone6、fina...
    99+
    2022-11-12
  • Java基础8:深入理解内部类
    更多内容请关注微信公众号【Java技术江湖】这是一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM、SpringBoot、MySQL、分布式、中间件、集群、Linux、网络、多线程,偶尔讲点Docker、EL...
    99+
    2023-06-02
  • C++中对象&类的深入理解
    什么是对象 任何事物都是一个对象, 也就是传说中的万物皆为对象. 对象的组成: 数据: 描述对象的属性 函数: 描述对象的行为, 根据外界的信息进行相应操作的代码...
    99+
    2022-11-12
  • Java类与对象超基础讲解
    目录什么是面向对象面向过程与面向对象类与对象的使用类与对象的使用与说明对象的初始化this的使用构造方法this可以调用本类的构造方法什么是面向对象 Java语言是一个纯面向对象的语...
    99+
    2022-11-13
  • 【Java 基础篇】Java反射:深入了解Class对象
    Java是一门强类型语言,它要求在编译时知道所有的类和对象类型。然而,有时候我们需要在运行时动态地获取和操作类的信息,这就是Java反射的用武之地。本文将深入探讨Java反射,特别是与Class对象...
    99+
    2023-10-27
    java python 开发语言 ajax 网络 eclipse git 原力计划
  • 深入理解java中抽象类和接口
    相信大家都有这种感觉:抽象类与接口这两者有太多相似的地方,又有太多不同的地方。往往这二者可以让初学者摸不着头脑,无论是在实际编程的时候,还是在面试的时候,抽象类与接口都显得格外重要!希望看完这篇文章各位都能从容地明了二者...我所理解的抽象...
    99+
    2021-07-19
    java入门 java 抽象类 接口
  • 【Java 基础】类和对象 & 方法重载详解
    《Java 零基础入门到精通》专栏持续更新中。通过本专栏你将学习到 Java 从入门到进阶再到实战的全套完整内容,所有内容均将集中于此专栏。无论是初学者还是有经验的开发人员,都可从本专栏获益。 ...
    99+
    2023-10-10
    java 开发语言 后端
  • 【Java 基础】类和对象 & 方法重载详解
    《Java 零基础入门到精通》专栏持续更新中。通过本专栏你将学习到 Java 从入门到进阶再到实战的全套完整内容,所有内容均将集中于此专栏。无论是初学者还是有经验的开发人员,都可从本专栏获益。 订阅专栏后添加我微信或者进交流群,...
    99+
    2023-08-21
    java 开发语言 后端
  • 一篇文章带你深入了解Java对象与Java类
    目录1.面向对象是什么?2.Java类1.什么是类2.Java类类的结构Java类的格式3.java对象4.类和对象5.类中的变量,方法1.变量分类成员变量:局部变量:2.方...
    99+
    2022-11-12
  • 夯实Java基础系列18:深入理解Java内部类及其实现原理
    本系列文章将整理到我在GitHub上的《Java面试指南》仓库,更多精彩内容请到我的仓库里查看https://github.com/h3pl/Java-Tutorial喜欢的话麻烦点下Star哈文章首发于我的个人博客:www.how2pla...
    99+
    2023-06-02
  • 新手了解java 类,对象以及封装基础知识
    目录1、类2、对象3.方法的重载 什么是方法的重载4、构造器 什么是构造方法构造方法语法:构造方法特点5.this this指代当前对象,即哪个对象调用就指代哪个对象6.封装封装的作...
    99+
    2022-11-12
  • Java 深入浅出解析面向对象之抽象类和接口
    目录抽象类声明抽象类声明抽象方法案例使用规则接口声明接口案例接口特性抽象类和接口的区别抽象类 java语言,声明类时 abstract class Db{} 说明Db类为抽象类。 j...
    99+
    2022-11-13
  • 深入源码解析Python中的对象与类型
    对象 对象, 在C语言是如何实现的? Python中对象分为两类: 定长(int等), 非定长(list/dict等) 所有对象都有一些相同的东西, 源码中定义为PyObject和PyVarObje...
    99+
    2022-06-04
    源码 对象 类型
  • Java中Class类的作用与深入理解
    Java中Class类的作用与深入理解  在程序运行期间,Java运行时系统始终为所有的对象维护一个被称为运行时的类型标识。这个信息跟踪着每个对象所属的类。JVM利用运行时信息选择相应的方法执行。而保存这些信息的类称为Class。...
    99+
    2023-05-31
    java class
  • Java基础入门篇之如何使用面向对象和类的定义
    这篇文章主要讲解了“Java基础入门篇之如何使用面向对象和类的定义”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java基础入门篇之如何使用面向对象和类的定义”吧!一、面向对象面向对象是在程...
    99+
    2023-06-15
  • 深入理解JAVA抽象类和接口的比较与异同
    目录一、理解抽象类  二、从语法定义层面看抽象类和接口三、从编程的角度看抽象类和接口四、从设计理念层面看抽象类和接口五、总结 抽象类(abstract ...
    99+
    2022-11-13
  • Java深入数据结构理解掌握抽象类与接口
    目录abstractabstract修饰方法抽象类的匿名子类对象final关键字接口接口相关规则接口的特性抽象类和接口的异同内部类总结abstract abstract介绍:可以用于...
    99+
    2022-11-13
  • 夯实Java基础系列10:深入理解Java中的异常体系
    本系列文章将整理到我在GitHub上的《Java面试指南》仓库,更多精彩内容请到我的仓库里查看https://github.com/h3pl/Java-Tutorial喜欢的话麻烦点下Star哈文章首发于我的个人博客:www.how2pla...
    99+
    2023-06-02
  • 深入理解Java对象编程中的文件处理技术
    Java是一种面向对象的编程语言,它在文件处理方面有很多有用的技术。本文将深入介绍Java对象编程中的文件处理技术,包括文件读取、文件写入、文件复制等方面的知识。 文件读取 Java中有多种文件读取方式,包括使用Scanner类、Buf...
    99+
    2023-11-04
    文件 编程算法 对象
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作