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 相关文章推荐
为什么在foreach循环中JAVA集合不能添加或删除元素
Jun 11 Java/Android
分析Java中Map的遍历性能问题
Jun 26 Java/Android
Java中多线程下载图片并压缩能提高效率吗
Jul 01 Java/Android
java固定大小队列的几种实现方式详解
Jul 15 Java/Android
解决Jenkins集成SonarQube遇到的报错问题
Jul 15 Java/Android
Java实现二分搜索树的示例代码
Mar 17 Java/Android
springboot+zookeeper实现分布式锁
Mar 21 Java/Android
Android Rxjava3 使用场景详解
Apr 07 Java/Android
JAVA长虹键法之建造者Builder模式实现
Apr 10 Java/Android
Java 多态分析
Apr 26 Java/Android
Java中的Kotlin 内部类原理
Jun 16 Java/Android
MyBatis在注解上使用动态SQL方式(@select使用if)
Jul 07 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
php用户注册时常用的检验函数实例总结
2014/12/22 PHP
让iframe框架网页在任何浏览器下自动伸缩
2006/08/18 Javascript
PHP中使用微秒计算脚本执行时间例子
2014/11/19 Javascript
javascript实现鼠标移到Image上方时显示文字效果的方法
2015/08/07 Javascript
AngularJS实现用户登录状态判断的方法(Model添加拦截过滤器,路由增加限制)
2016/12/12 Javascript
jQuery中的on与bind绑定事件区别实例详解
2017/02/28 Javascript
jQuery实现的简单在线计算器功能
2017/05/11 jQuery
Vue 2.0的数据依赖实现原理代码简析
2017/07/10 Javascript
Vue中的slot使用插槽分发内容的方法
2018/03/01 Javascript
从vue源码解析Vue.set()和this.$set()
2018/08/30 Javascript
详解vscode中vue代码颜色插件
2018/10/11 Javascript
JS Math对象与Math方法实例小结
2019/07/05 Javascript
JavaScript如何获取一个元素的样式信息
2019/07/29 Javascript
Vue实现商品详情页的评价列表功能
2019/09/04 Javascript
jquery 时间戳转日期过程详解
2019/10/12 jQuery
ES2020 已定稿,真实场景案例分析
2020/05/25 Javascript
[01:01:29]2018DOTA2亚洲邀请赛 4.4 淘汰赛 VP vs Liquid 第一场
2018/04/05 DOTA
Django框架下在URLconf中指定视图缓存的方法
2015/07/23 Python
Windows上使用virtualenv搭建Python+Flask开发环境
2016/06/07 Python
python脚本爬取字体文件的实现方法
2017/04/29 Python
python读取中文txt文本的方法
2018/04/12 Python
利用pyinstaller打包exe文件的基本教程
2019/05/02 Python
详解python 爬取12306验证码
2019/05/10 Python
Python如何使用turtle库绘制图形
2020/02/26 Python
Skyscanner台湾:全球知名的旅行比价引擎
2018/07/01 全球购物
美国主要的特色咖啡和茶公司:Peet’s Coffee
2020/02/14 全球购物
静态变量和实例变量的区别
2015/07/07 面试题
函授毕业自我鉴定
2013/12/19 职场文书
应届本科生推荐信范文
2013/12/25 职场文书
商场消防演习方案
2014/02/12 职场文书
关于环保的演讲稿
2014/05/10 职场文书
中学生关于梦想的演讲稿
2014/08/22 职场文书
高中生期中考试失利检讨书
2014/10/23 职场文书
同学聚会感言一句话
2015/07/30 职场文书
golang 如何用反射reflect操作结构体
2021/04/28 Golang
python中取整数的几种方法
2021/11/07 Python