特别说明:若是有不对的地方欢迎指正

简要概述:

Object类是java中所有类默认继承的一个类。下面介绍一下Object类中的一些重要的方法,面试中也是经常会被问到的。尤其是==和equals的区别

1、getClass();

1 packagecom.test;2

3 importlombok.Data;4

5 /**

6 * @Title: StudyObj7 * @Description: Object类方法8 *@author: sunxuesong@hztianque.com9 * @date: Created in 12:46 2019/8/310 * @Modifired by:11 */

12 @Data13 public classStudyObj {14

15 public static void main(String[] args){16 StudyObj studyObj = newStudyObj();17 //得到运行状态中该类的路径 输出结果为:class com.test.StudyObj

18 System.out.println(studyObj.getClass());19 }20 }

2、clone();   // 顾名思义得到该类的一个副本,基本上不用

3、wait();、notify(); 、notifyAll()// 分别是等待、唤醒当前、唤醒所有的意思,基本上不用

4、hashCode(); // 得到该对象的一个hash码,返回值是int类型,基本上不用

5、finalize(); // 若该对象调用了finalize()方法则表示通知jvm去回收该对象进行资源释放,一般也不会被调用

6、toString(); // 输出的是类名+@+hashcode, 该方法一般都会被重写,若类中在加入@Data注解的时候,toString()会被重写返回的是属性和值

7、equals(Object); // 这里着重说说equals,请看下面的代码和注释说明

1 packagecom.test;2

3 importlombok.Data;4

5 /**

6 * @Title: StudyObj7 * @Description: sunxuesong8 *@author: sunxuesong@hztianque.com9 * @date: Created in 12:46 2019/8/310 * @Modifired by:11 */

12 @Data13 public classStudyObj {14

15 privateString name;16

17 privateStudyObj(String name) {18 this.name =name;19 }20

21 public static voidmain(String[] args) {22

23 StudyObj studyObj1 = new StudyObj("张三");24 StudyObj studyObj2 = new StudyObj("张三");25 /*

26 * 答案是false27 * 说到这里就有人会疑问了,参数里面明明是同一人问什么却是false,这里就牵扯到jvm的堆内存了28 * 首先我们要知道凡是通过new关键字生成的对象都是在堆内存中,这中情况下比较的是堆中的内存地址29 * 若该对象不是单例的或者该对象没有重写equals方法那么equals比较出来的将永远都是false30 * 因为该类上面加了@Data注解,这个注解重写equals方法,所以当内容都是张三的时候返回的是true31 * 抛去@Data注解则是false,我们一般用这个注解的目的是去除get和set方法来达到代码简洁的目的32 * 所以这个注解要慎用33 */

34 if(studyObj1.equals(studyObj2)) {35 System.out.println(true);36 }else{37 System.out.println(false);38 }39 /*

40 * 这里返回的是false,和equals一样比较的是jvm堆中的内存地址是不是指向同一个内存41 * 说明:对象比较的是内存,像下面的String进行equals比较的则是值(切记)42 * 但是==比较的还是堆内存地址是否指向同一个内存43 */

44 if (studyObj1 ==studyObj2) {45 System.out.println(true);46 }else{47 System.out.println(false);48 }49

50 String str1 = new String("aaa");51 String str2 = new String("aaa");52 //true

53 System.out.println(str1.equals(str2));54 //false

55 System.out.println(str1 ==str2);56

57 }58 }

总结:==和equals区别:

对象:==和equals比较的都是内存地址是否指向同一块内存

String:equals比较的是值是否相同,==比较的是内存地址是否指向同一块内存

若类上面加了@Data注解则表示重写了equals方法,对象中的属性值一致的话也是返回为true,否则为false

若是单例模式则返回的是true,为什么呢??下结将说明单例的好处,以及为什么在写代码的时候要用单例?

dataobject java_Object类和@Data注解相关推荐

  1. 用@Data注解的形式替代类中的setter、getter方法

    目录 1. 封装 2. @Data注解介绍 3. Lombok的使用 1. 封装 在类中,为了增强数据的安全性和隐蔽性,通常会对数据和与数据有关的方法进行封装: 封装的步骤: 1.将类中的属性设置为p ...

  2. IDEA使用@Data注解,类调用get、set方法标红的解决办法

    IDEA使用@Data注解,类调用get.set方法标红的解决办法 参考文章: (1)IDEA使用@Data注解,类调用get.set方法标红的解决办法 (2)https://www.cnblogs. ...

  3. @Data 注解对类静态字段, 无效

    测试 @Data public class HelloA {private String name = "dog";private String age = "12&qu ...

  4. java data使用_@Data注解详解及使用方法-Fun言

    @Data作用 去除Getter,Setter,equals,hashCode,toString方法,@Data注解在类上时,简化java代码编写,为该类提供读写属性.简单来说就是不用再手动添加get ...

  5. lombok中的@Data注解与MyBatis的懒加载机制冲突解决

    使用@Data注解与mybatis的懒加载机制实现一对一关系查询时,发现怎么配置都无效,就是一下都查出来了,根本没有懒加载 1.application.yml配置文件配置如下: # mybatis 配 ...

  6. lombok 中的@Data注解

    今天看到有代码中的Dao包中的类文件,写的极其简洁,甚至引起了开发工具InteliJ的报错,然后程序还能稳健地跑起来. 1 2 3 4 5 6 7 8 9 import lombok.Data; @D ...

  7. Spring Boot中Spring data注解的使用

    文章目录 Spring Data Annotations @Transactional @NoRepositoryBean @Param @Id @Transient @CreatedBy, @Las ...

  8. Lombok中@Data注解 @ToString注解 @NoArgsConstructo注解 @AllArgsConstructor注解

    1:项目中引入依赖 <dependency><groupId>org.projectlombok</groupId><artifactId>lombok ...

  9. idea编辑器中使用@Data注解无效解决办法

    使用@Data注解可以减少了以前的get和set等方法,但是在idea编辑器中不认识会在使用实体类元素时候找不到(但是运行不会报错) 所以可以添加插件

最新文章

  1. 网站推广流量获取仍需寻找全新获取网站推广流量渠道
  2. 简要说说一个完整机器学习项目的流程
  3. centos7安装minikube
  4. 10054 java,为什么Socket.Receive在远程主机断开连接时抛出SocketException(10054)?
  5. Modularity(模块化-CommonJS规范)
  6. Jquery自定义分页插件
  7. 图像特效之浮雕与雕刻
  8. 安装centos7 Minimal后 开启远程SSH
  9. HTML简单代码示例
  10. ckplayer快速入门
  11. php 微信h5支付 mweb,php微信H5支付讲解(MWEB)
  12. Unity3D-VR《静夜诗》5-李白吟诗
  13. 关于js中的类式继承
  14. java long 空_long类型判断是否为空
  15. 坑人的vultr服务商,坑人的送$100活动
  16. 手机用的网络和计算机用的网络一样吗,终于懂了手机用电脑的网络上网
  17. 开根号向下取整代码实现
  18. 一周刷爆LeetCode,算法da神左神(左程云)耗时100天打造算法与数据结构基础到高级全家桶教程,直击BTAJ等一线大厂必问算法面试题真题详解 笔记
  19. SAS小白入门第二节:SAS数据类型和格式化(输入和输出)
  20. symfony学习笔记1—简介

热门文章

  1. 气象接口的开发和使用
  2. [linux]【编译】【高级01】 - 动态库的设定和依赖性的检查 20160921更新 文章没有最终结案
  3. python技术文档_Python技术文档最佳实践
  4. android手机游戏开发从入门到精通_unity3d游戏开发如何从入门到精通?
  5. c语言第四版第8章答案,C语言答案第8章.doc
  6. 老款诺基亚java都市恋爱养成,被“10年前的手机”刷屏了?都是青春和故事啊
  7. android 运动目标检测_MindSpore应用案例:AI对篮球运动员目标的检测
  8. 查看代码 index.html,Javascript查看大图功能代码实现
  9. 李大勇matlab视频解压密码,13.4 环境控制、手动开关模块
  10. 还在维护吗_你的模具生锈了吗?来了解一下这些防锈维护事项