一起养成写作习惯!这是我参与「掘金日新计划 · 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 !!!
-------------------------------------------
⭐️若喜欢我,就请关注我叭。
⭐️若对您有用,就请点赞叭。
⭐️若有疑问,就请评论留言告诉我叭。
-------------------------------------------