java零基础入门-Object类

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第15天,点击查看活动详情

哈喽,各位小伙伴们好,我是喵手。

       今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流学习,互相学习,才能成长的更快,对吧。

       我是一名java开发,所以日常接触到最多的就是java啦,所以我趁自己有空,就来好好回忆,把自己学到的会的,进行输出,不图什么有回报,只想能帮助到更多的小伙伴,就好。

小伙伴们在批阅的过程中,如果觉得文章不错,欢迎点赞、收藏、关注哦。三连即是对喵手我创作道路上最好的鼓励与支持!

一、前言

       我们今天来点高级货,给大家讲讲Object类吧,毕竟对于当你们在实际开发过程中,java.lang.Object包是经常会使用到的。比如它提供的toString()方法,equals()方法等。如果说你用不到,那是不可能的,是后端开发都会涉及到的。

       所以今天我就来给大家讲讲这个类吧。我主要是想这三方面下手:

  • Object类特点
  • Object类的toString()方法
  • Object类的equals()方法

       如果你是看了我这期内容,那么以上三点你如果掌握了,那么你就可以说对Object类基本掌握,哈哈哈,至于熟练使用,肯定是要扒源码的。

      好啦,我这就开始教学啦,大家好好听。

二、Object类特点

      说起Object类,那简直就是鼻祖,为啥这么说,因为Object是java语言的根基,是所有类的父类,你没听错,就是所有的类哦。Object类中的所有方法,子类都能使用。在你对对象实例化时,最终源头就是Object类,它是对象的起始。

       如果说一个类没有指定父类,那么它则默认继承父类Object。

如下我举个例子,你们就能明白了。

public class Student /*extends Object*/{
    //...
}
复制代码

       在Object类中总共它提供了11个方法,比如:equals()、hashCode()、toString()、getClass()等。

​       而今天,我们不学那么多,我们学习两个常用的,经常在项目中是会被使用到的。

三、Object类之toString()

       toString()方法:调用作用就是将对象转成字符串表示,如果没有你在类中没有重写该toString(),那么返回的就是该对象的类型+@+内存地址。

       但实际项目开发中,经常会使用toString输出指定内容,所以这个时候你就会对它进行重写,具体怎么做呢?可以看看我如下演示:

@Data
public class UserEntity{

    private String name;

    private Integer age;

    private String sex;


    @Override
    public String toString() {
        return "UserEntity{" + "name=" + name + ",age=" + age + ",sex=" + sex + "}";
    }
}
复制代码

       我们可以对它进行测试一波,写个test测试类。然后new一个user对象,加上给它赋值,看看最后能不能被toString转成我们重写后的输出格式。

@Test
public void test() {
    UserEntity user = new UserEntity();

    user.setName("bug菌");
    user.setAge(18);
    user.setSex("男");
    String userStr = user.toString();
    //输出toString。
    System.out.println(userStr);
}
复制代码

​       很明显。控制台是按我们重写toString()所设定的输出格式,并且也成功拿到了我们所设置的属性值。

四、Object类之equals()

       讲完了Object类,那接下来就是说道说道,它提供的equals()方法吧。

它所发挥的作用就是判断对象是否“相等”。

如果你调用对象的equals()方法来比较另一个对象,则这里是比较的情况就得分情况讨论了。

1、默认地址比较

      如果你没有对该类的equals()方法进行重写,那么在你使用equals()方法时是默认使用 “ == ”运算符来进行比较两对象的内存地址,只要不是同一个对象,结果就返回false,否则返回true。

2、对象内容比较

       如果你希望比较对象的内容,那么你就得覆盖Object()默认提供所提供比较内存地址的逻辑,而自己重新编辑执行逻辑即可。

具体怎么重写呢?我可以给你举个例子,仅供参考:

@Override
public boolean equals(Object obj) {

    //如果对象地址一样,返回true
    if (this == obj) {
        return true;
    } 
   //如果参数为空或者类型信息不一样,则返回false。
    if (obj == null || getClass() != obj.getClass()) {
        return false;
    }
    //转换为当前类型
    UserEntity user = (UserEntity) obj;
    //转成类型一样, 然后比较属性值。
    return age == user.age && name == user.name && sex == user.sex;
}
复制代码

       这段equals()重写,考虑了对象是否为空、类型是否一致等问题,但重写逻辑并非唯一,这个看大家实际业务需要而定,也就是视情况而定,我这里只是简单给大家做个演示罢了,好吧,大家别误解成了只能这么写。

       至于Object类所提供的其他方法,比如hashCode()、getClass()等,我日后再慢慢教大家,可好?毕竟这一期,大家线下也得好好练习,因为我对equals并没有给出示例,所以就希望大家能去进行一个补充,唯有在实际练习中,你才能发现问题。

       ... ...

       好啦,以上就是类和对象的基本使用啦,如果对文中的任何知识点有疑问,欢迎评论区评论留言呀,我看见都会一一解答的。

五、结尾

       教学是结束了,但是有些话不知我但讲不当讲,啊哈哈, 可我还是想说给你们听听。如下是我很喜欢的一句话,我打算送给你们,希望我们都能变得更好更优秀。

学习不分先后,知识不分多少;事无巨细,当以虚心求教;三人行,必有我师焉!!!

wished for you successed !!!

-------------------------------------------

⭐️若喜欢我,就请关注我叭。

⭐️若对您有用,就请点赞叭。

⭐️若有疑问,就请评论留言告诉我叭。

-------------------------------------------

猜你喜欢

转载自juejin.im/post/7086825176519671821