ObjectObjects

Object

概念:

Object 是类层次结构的根,每个类都可以将 Object 作为超类。所有类都直接或者间接的继承自该类,换句话说,该类所具备的方法,所有类都会有一份

toString:

作用:以良好的格式,更方便的展示对象中的属性值
重写toString方法的方式可以打印属性值,否则就是继承Object的方法,打印的是内存地址
在类的空白区域,右键 -> Generate -> 选择toString

代码演示:

package api.obj;import java.util.Objects;public class Student {private String name;private int age;public Student(){}public Student(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "Student{" +"name='" + name + '\'' +", age=" + age +'}';}/**equals也是需要重写的否则就算是调用也是用的object的equals,在源码里object的equals是用的==,所以比较的还是内存地址,要想比较属性值就要重写*/@Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;Student student = (Student) o;return age == student.age && Objects.equals(name, student.name);}@Overridepublic int hashCode() {return Objects.hash(name, age);}
}

public class Demo01 {public static void main(String[] args) {Student s1 = new Student("bbb",11);Student s2 = new Student("bbb",11);System.out.println(s1.equals(s2));System.out.println(s1 == s2);/**直接打印对象控制台是打印的地址值:day13.Student@4c203ea1通过源码跟进看到,println调用了valueOf,valueOf调用了toString方法,获取包名+类名+@+地址值然后再返回给println方法public String toString () {return getClass().getName() + "@" + Integer.toHexString(hashCode());}Student没有写toString方法,但是所有的类都默认继承了Object类,所以可以使用Object的toStrinig方法但是拿到这个地址值没什么卵用,所以这里就涉及到了重写,放父类的方法不能满足子类时,就可以重写该方法,在子类有该方法后,调用时会采用就近原则使用子类的,而不去调用Object的toString方法,重新以后就不是地址值了,就是打印的属性值*/System.out.println(s1); }
}

equals:

作用:用于对象之间的比较,返回true和false的结果

重写equals方法的场景

不希望比较对象的地址值,想要结合对象属性进行比较的时候。

代码演示:

      public static void main(String[] args) {String s1 = "abc";StringBuilder sb = new StringBuilder("abc");//1.此时调用的是String类中的equals方法,String类重写了toString,但源码会判断是不是一个字符串类型,不是的话直接返回falseSystem.out.println(s1.equals(sb)); // false//StringBuilder类中是没有重写equals方法,用的就是Object类中的==System.out.println(sb.equals(s1)); // false}
Objects:

概念:

用于操作对象或在操作前检查某些条件,可以处理一些空值

常用方法:

方法名说明
public static String toString(对象)返回参数中对象的字符串表示形式。
public static String toString(对象, 默认字符串)返回对象的字符串表示形式。
public static Boolean isNull(对象)判断对象是否为空
public static Boolean nonNull(对象)判断对象是否不为空

代码演示:

    public static void main(String[] args) {// public static String toString(对象): 返回参数中对象的字符串表示形式。// 调用的是对象的toString,如果对象中没有就调用objectStudent s = new Student("itzhuzhu", 23);String result = Objects.toString(s);System.out.println(result);// public static String toString(对象, 默认字符串): 返回对象的字符串表示形式。如果对象为空,那么返回第二个参数.Student s2 = new Student("itzhuzhu", 23);Student s3 = null;String result2 = Objects.toString(s3, "随便写一个");System.out.println(result2);// public static Boolean isNull(对象): 判断对象是否为空Student s4 = null;Student s5 = new Student();System.out.println(Objects.isNull(s4)); // trueSystem.out.println(Objects.isNull(s5)); //  false// public static Boolean nonNull(对象): 判断对象是否不为空Student s6 = new Student();Student s7 = null;System.out.println(Objects.nonNull(s6));// truSystem.out.println(Objects.nonNull(s7));// false}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/572294.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一个成功的研发团队应具备的9大属性

原文链接 1.自动化是关键研发过程中,很多工作步骤枯燥耗时,具有较强的重复性或规律性,研发人员往往考虑会将这部分内容用自动化代替,如此一来,团队就可以把更多时间投入在核心工作和更有创造性的任务上。例如&#xff…

cod16 服务器正在维护,使命召唤16玩不了怎么办 使命召唤16进不去解决方法

使命召唤16进不去怎么办?不少玩家朋友们在登入游戏界面的时候会出现各种弹窗或无法运行的情况,下面我们就来分享下使命召唤16玩不了解决方法汇总,希望对出现的游戏运行问题的玩家们有所参考。使命召唤16玩不了解决方法:DX发生错误…

服务器里怎么更改网站图片大小,php实现在服务器端调整图片大小的方法

本文实例讲述了php实现在服务器端调整图片大小的方法。分享给大家供大家参考。具体分析如下:在服务器端完成图片大小的调整,会比在浏览器的处理有很多的好处。本文介绍了PHP如何在服务器端调整图片大小。代码包括两部分:① imageResizer() is…

分布式架构系列目录

1、大数据系列|Flume的架构和环境安装 2、大数据系列|Sqoop概念和环境安装 3、大数据系列|Sqoop1的核心命令 4、大数据系列|Vmware虚拟机中安装centos7 5、大数据系列|Vmware下Linux的虚拟机增加磁盘空间 6、大数据系列|Hive架构和工作原理转载于:https://www.cnblogs.com/abc8…

css高清动图,CSS3+PNG实现GIF动画效果

昨天讲到了JavaScriptPNG模拟GIF动画,今天教大家用css3 PNG实现GIF动画效果。代码很简单主要用到了css3的animation属性,代码如下:-webkit-keyframes loading{0%{-webkit-transform: rotate(0deg);}50%{-webkit-transform: rotate(180deg);}…

soapUI-JDBC Request

1.1.1 JDBC Requet 1.1.1.1 概述 – JDBC Request Option Description JDBC Request TestStep Toolbar 对JDBC Request TestStep的总体控制 Parameters Toolbar 控制JDBC请求TestStep参数 Parameters Table 运行查询时要替换的参数表 Configured JDBC Connection …

梦幻西游手游服务器维护公告,梦幻西游手游3月7日全区全服维护更新公告

为保证服务器的运行稳定和服务质量,梦幻西游手游将于3月7日8:00停机,进行维护工作。预计维护时间为8:00~9:00。如果在预定时间内无法完成维护内容,开机时间也将继续顺延。请各位玩家相互转告,并提前留意游戏时间&#…

06_使用开源项目提交参数

1231312转载于:https://www.cnblogs.com/ZHONGZHENHUA/p/7076134.html

可变参数不可变集合

可变参数: 可变参数:就是形参是可以变化的,很灵活,不需要提前定义好具体的数据,可变参数的变量底层是一个数组 格式: public static int sum(数据类型...变量名) {}注意事项: 如果方法里有多个…

我的世界服务器虚拟菜单插件,[综合|娱乐|管理][比赛]VirtualMenu——支持多种类型GUI的虚拟菜单[1.7.10~1.14]...

您尚未登录,立即登录享受更好的浏览体验!您需要 登录 才可以下载或查看,没有帐号?注册(register)x本帖最后由 ColorsWind 于 2020-4-4 11:27 编辑写在前面v2版本已发布,欢迎尝试https://github.com/ColorsWind/Virtual…

什么是类加载器

作用: 负责把.class文件(存储的物理文件)加载在到内存中 类加载时机: 创建类的实例(对象)调用类的类方法访问类或者接口的类变量,或者为该类变量赋值使用反射方式来强制创建某个类或接口对应的j…

Spring中@Transactional事务回滚(含实例详细讲解,附源码)

原文出处: 小宝鸽 一、使用场景举例 在了解Transactional怎么用之前我们必须要先知道Transactional有什么用。下面举个栗子:比如一个部门里面有很多成员,这两者分别保存在部门表和成员表里面,在删除某个部门的时候,假设…

服务器不稳定 如何让百度重新收录网站,教你如何让百度重新收录首页

很多站长都应该碰到这个问题:百度不收录首页,或者site网站,首页不在第一位。我想这个问题也曾经困扰过许多的站长,我说说导致百度不收录首页或者首页不在第一位的几种状况以及解决的方法。第一 页面链接过多,一般一个…

日志-Log4J

日志: 程序中的日志可以用来记录程序在运行的时候点点滴滴。并可以进行永久存储 日志和输出语句的区别: 输出语句日志技术取消日志需要修改代码,灵活性比较差不需要修改代码,灵活性比较好输出位置只能是控制台可以将日志信息写入…

七月工作笔记 7.7 - 7.11

1. vs第二次单步调试崩溃。。一開始不知道为什么,重装无数次。。后来发现是VAssistX 插件的问题。。。将下载下来的插件包中的VA_X.dll 复制到VAssistX 的安装路径下就可以。2. 发现了一个非常棒的vs配色方案的站点 http://studiostyl.es/3. sendmessage和postme…

VMware安装虚拟机Mac版

VMware: 1、不需要分区或重开机就能再同一台PC上使用多种操作系统。 2、完全隔离并且保护不同操作系统的环境以及所有软件、资料。 3、不同的操作系统之间还能互动操作 4、有复原功能 5、能够设置并且随时修改操作系统的操作环境 下载地址:https://www.v…

Drupal 自己定义主题实体 Theming Custom Entities

在自己定义主题中输出结果时,有三个部分或很多其它特殊的函数。如 hook_menu,Page Callback。MODULE_theme 钩子 1、hook_menu 为了使用自己定义的实体。像创建、编辑、删除、查看实体的功能,就必须要创建一些 Menu path。这里创建、编辑、…

黑暗之魂3正在从服务器获取信息,黑暗之魂3如何解决入侵服务器问题 | 手游网游页游攻略大全...

发布时间:2016-01-04今天为大家带来的是黑暗之魂3法兰守卫入侵方法,一起来看看吧! 黑暗之魂3 法兰守卫入侵方法 法兰守卫怎么入侵 今天为大家带来的是黑暗之魂3法兰守卫入侵方法,一起来看看吧! 你的游戏可能被防火墙禁止了——解决方法:找到你的 ...标签&#xff1a…

Linux用户与用户组

Linux目录详解: 目录名说明/bin重要的二进制 (binary) 应用程序:包含二进制文件,系统的所有用户使用的命令都在这个目录下/boot启动 (boot) 配置文件:包含引导加载程序相关的文件,开机时用到的引导文件/data数据存储区…

数据库增添

条件查询用where 比如&#xff1a;查询Score表中成绩在60到80之间的所有记录。 select DEGREE from score where degree>60 and degree<80 模糊查询用% 比如查询与三相关的数据&#xff1a; where cno like 3% 3%是已三开头 %3%是中间带3 %3是末尾带3 排序查询 orde…