dataobject java_Object类和@Data注解
特别说明:若是有不对的地方欢迎指正
简要概述:
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注解相关推荐
- 用@Data注解的形式替代类中的setter、getter方法
目录 1. 封装 2. @Data注解介绍 3. Lombok的使用 1. 封装 在类中,为了增强数据的安全性和隐蔽性,通常会对数据和与数据有关的方法进行封装: 封装的步骤: 1.将类中的属性设置为p ...
- IDEA使用@Data注解,类调用get、set方法标红的解决办法
IDEA使用@Data注解,类调用get.set方法标红的解决办法 参考文章: (1)IDEA使用@Data注解,类调用get.set方法标红的解决办法 (2)https://www.cnblogs. ...
- @Data 注解对类静态字段, 无效
测试 @Data public class HelloA {private String name = "dog";private String age = "12&qu ...
- java data使用_@Data注解详解及使用方法-Fun言
@Data作用 去除Getter,Setter,equals,hashCode,toString方法,@Data注解在类上时,简化java代码编写,为该类提供读写属性.简单来说就是不用再手动添加get ...
- lombok中的@Data注解与MyBatis的懒加载机制冲突解决
使用@Data注解与mybatis的懒加载机制实现一对一关系查询时,发现怎么配置都无效,就是一下都查出来了,根本没有懒加载 1.application.yml配置文件配置如下: # mybatis 配 ...
- lombok 中的@Data注解
今天看到有代码中的Dao包中的类文件,写的极其简洁,甚至引起了开发工具InteliJ的报错,然后程序还能稳健地跑起来. 1 2 3 4 5 6 7 8 9 import lombok.Data; @D ...
- Spring Boot中Spring data注解的使用
文章目录 Spring Data Annotations @Transactional @NoRepositoryBean @Param @Id @Transient @CreatedBy, @Las ...
- Lombok中@Data注解 @ToString注解 @NoArgsConstructo注解 @AllArgsConstructor注解
1:项目中引入依赖 <dependency><groupId>org.projectlombok</groupId><artifactId>lombok ...
- idea编辑器中使用@Data注解无效解决办法
使用@Data注解可以减少了以前的get和set等方法,但是在idea编辑器中不认识会在使用实体类元素时候找不到(但是运行不会报错) 所以可以添加插件
最新文章
- 网站推广流量获取仍需寻找全新获取网站推广流量渠道
- 简要说说一个完整机器学习项目的流程
- centos7安装minikube
- 10054 java,为什么Socket.Receive在远程主机断开连接时抛出SocketException(10054)?
- Modularity(模块化-CommonJS规范)
- Jquery自定义分页插件
- 图像特效之浮雕与雕刻
- 安装centos7 Minimal后 开启远程SSH
- HTML简单代码示例
- ckplayer快速入门
- php 微信h5支付 mweb,php微信H5支付讲解(MWEB)
- Unity3D-VR《静夜诗》5-李白吟诗
- 关于js中的类式继承
- java long 空_long类型判断是否为空
- 坑人的vultr服务商,坑人的送$100活动
- 手机用的网络和计算机用的网络一样吗,终于懂了手机用电脑的网络上网
- 开根号向下取整代码实现
- 一周刷爆LeetCode,算法da神左神(左程云)耗时100天打造算法与数据结构基础到高级全家桶教程,直击BTAJ等一线大厂必问算法面试题真题详解 笔记
- SAS小白入门第二节:SAS数据类型和格式化(输入和输出)
- symfony学习笔记1—简介
热门文章
- 气象接口的开发和使用
- [linux]【编译】【高级01】 - 动态库的设定和依赖性的检查 20160921更新 文章没有最终结案
- python技术文档_Python技术文档最佳实践
- android手机游戏开发从入门到精通_unity3d游戏开发如何从入门到精通?
- c语言第四版第8章答案,C语言答案第8章.doc
- 老款诺基亚java都市恋爱养成,被“10年前的手机”刷屏了?都是青春和故事啊
- android 运动目标检测_MindSpore应用案例:AI对篮球运动员目标的检测
- 查看代码 index.html,Javascript查看大图功能代码实现
- 李大勇matlab视频解压密码,13.4 环境控制、手动开关模块
- 还在维护吗_你的模具生锈了吗?来了解一下这些防锈维护事项