Java 使用类型为Object的变量指向任意类型的对象


Posted in Java/Android onApril 13, 2022

基本概念:

  • Object类位于java.lang包中,java.lang包包含着Java最基础和核心的类,在编译时会自动导入;
  • Object类是所有Java类的祖先。每个类都使用 Object 作为超类。所有对象(包括数组)都实现这个类的方法。可以使用类型为Object的变量指向任意类型的对象

equals()方法:比较两个对象是否同一

      如果两个对象具有相同的类型以及相同的属性值,则称这两个对象相等。如果两个引用对象指的是同一个对像,则称这两个变量同一。Object类中定义的equals 函数原型为:

public boolean equals(Object);他是判断两个对象是否同一,并不是是否相等

Java 使用类型为Object的变量指向任意类型的对象

  •  ①只能处理引用类型变量
  •  ②在Object类,发现equals()仍然比较的两个引用变量的地址值是否相等
package com.example.demo.test;

public class Person {

    private String userName;
    private String age;

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }
}
package com.example.demo.test;

public class Test {

    public static void main(String[] args) {
        Person p1 = new Person();
        Person p2 = new Person();
        System.out.println(p1.equals(p2));
        System.out.println(p1 == p2);

        /*
         * String类重写了Object类的equals()方法,比较是两个对象的实体内容"是否完全相同。
         */
        String s1 = new String("AA");
        String s2 = new String("AA");
        System.out.println(s1.equals(s2));
        System.out.println(s1 == s2);
    }
}

Java 使用类型为Object的变量指向任意类型的对象

从运行结果可以看到的是Object中的equals方法比较的是两个对象是否同一,

而String类中的equals方法比较的是字符串的value是否相等。 请看String.java中equals的方法

public boolean equals(Object anObject) {
        if (this == anObject) {
            return true;
        }
        if (anObject instanceof String) {
            String anotherString = (String)anObject;
            int n = value.length;
            if (n == anotherString.value.length) {
                char v1[] = value;
                char v2[] = anotherString.value;
                int i = 0;
                while (n-- != 0) {
                    if (v1[i] != v2[i])
                        return false;
                    i++;
                }
                return true;
            }
        }
        return false;
    }

到此这篇关于Java Object类equals方法的文章就介绍到这了!

Java/Android 相关文章推荐
Java内存模型之happens-before概念详解
Jun 13 Java/Android
SpringBoot生成License的实现示例
Jun 16 Java/Android
Java各种比较对象的方式的对比总结
Jun 20 Java/Android
Java实现多线程聊天室
Jun 26 Java/Android
elasticSearch-api的具体操作步骤讲解
Jun 28 Java/Android
Java日常练习题,每天进步一点点(38)
Jul 26 Java/Android
Java8中Stream的一些神操作
Nov 02 Java/Android
Java Lambda表达式常用的函数式接口
Apr 07 Java/Android
Android studio 简单计算器的编写
May 20 Java/Android
Java实现添加条码或二维码到Word文档
Jun 01 Java/Android
一文了解Java动态代理的原理及实现
Jul 07 Java/Android
JDK8中String的intern()方法实例详细解读
Sep 23 Java/Android
java中为什么说子类的构造方法默认访问的是父类的无参构造方法
Apr 13 #Java/Android
Spring Cloud Netflix 套件中的负载均衡组件 Ribbon
Apr 13 #Java/Android
Android开发之WECHAT微信小程序路由跳转的两种形式
Apr 12 #Java/Android
JavaWeb Servlet开发注册页面实例
Java中的继承、多态以及封装
JAVA长虹键法之建造者Builder模式实现
Apr 10 #Java/Android
SpringCloud项目如何解决log4j2漏洞
Apr 10 #Java/Android
You might like
全国FM电台频率大全 - 14 江西省
2020/03/11 无线电
php+highchats生成动态统计图
2014/05/21 PHP
php数组和链表的区别总结
2019/09/20 PHP
php 使用ActiveMQ发送消息,与处理消息操作示例
2020/02/23 PHP
JS中令人发指的valueOf方法介绍
2013/02/22 Javascript
jquery高效反选具体实现
2013/05/05 Javascript
js将控件隐藏及display属性的使用介绍
2013/12/30 Javascript
js输出阴历、阳历、年份、月份、周示例代码
2014/01/29 Javascript
JavaScript删除数组元素的方法
2015/03/20 Javascript
Web开发必知Javascript技巧大全
2016/02/23 Javascript
jQuery页面加载初始化的3种方法(推荐)
2016/06/02 Javascript
BootStrap iCheck插件全选与获取value值的解决方法
2016/08/24 Javascript
原生js实现密码输入框值的显示隐藏
2017/07/17 Javascript
vue中如何让子组件修改父组件数据
2018/06/14 Javascript
微信小程序实现收藏与取消收藏切换图片功能
2018/08/03 Javascript
JavaScript创建对象的四种常用模式实例分析
2019/01/11 Javascript
React 组件渲染和更新的实现代码示例
2019/02/21 Javascript
解决Vue中 父子传值 数据丢失问题
2019/08/27 Javascript
小程序双头slider选择器的实现示例
2020/03/31 Javascript
vue 使用 v-model 双向绑定父子组件的值遇见的问题及解决方案
2021/03/01 Vue.js
Python2中的raw_input() 与 input()
2015/06/12 Python
python开发之基于thread线程搜索本地文件的方法
2015/11/11 Python
Python 比较两个数组的元素的异同方法
2017/08/17 Python
Tornado 多进程实现分析详解
2018/01/12 Python
python使用magic模块进行文件类型识别方法
2018/12/08 Python
Python中三元表达式的几种写法介绍
2019/03/04 Python
opencv与numpy的图像基本操作
2019/03/08 Python
Python匿名函数/排序函数/过滤函数/映射函数/递归/二分法
2019/06/05 Python
python opencv鼠标事件实现画框圈定目标获取坐标信息
2020/04/18 Python
解决Python列表字符不区分大小写的问题
2019/12/19 Python
小学教师听课制度
2014/02/01 职场文书
逃课上网检讨书
2014/02/20 职场文书
菜篮子工程实施方案
2014/03/08 职场文书
二手房购房意向书范本
2014/04/01 职场文书
大学生简历求职信
2014/06/24 职场文书
pytorch 如何把图像数据集进行划分成train,test和val
2021/05/31 Python