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
springboot如何初始化执行sql语句
Jun 22 Java/Android
解决SpringBoot跨域的三种方式
Jun 26 Java/Android
Spring Boot 实现敏感词及特殊字符过滤处理
Jun 29 Java/Android
每日六道java新手入门面试题,通往自由的道路
Jun 30 Java/Android
java基础——多线程
Jul 03 Java/Android
新手初学Java网络编程
Jul 07 Java/Android
Java使用jmeter进行压力测试
Jul 09 Java/Android
springboot+WebMagic+MyBatis爬虫框架的使用
Aug 07 Java/Android
JAVA springCloud项目搭建流程
May 11 Java/Android
Spring 使用注解开发
May 20 Java/Android
Android移动应用开发指南之六种布局详解
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
PHP.MVC的模板标签系统(二)
2006/09/05 PHP
PHP下通过系统信号量加锁方式获取递增序列ID
2009/09/25 PHP
php foreach 参数强制类型转换的问题
2010/12/10 PHP
单一index.php实现PHP任意层级文件夹遍历(Zjmainstay原创)
2012/07/31 PHP
ThinkPHP关联模型操作实例分析
2012/09/23 PHP
php读取flash文件高宽帧数背景颜色的方法
2015/01/06 PHP
PHP利用Mysql锁解决高并发的方法
2018/09/04 PHP
PHP设计模式之装饰器(装饰者)模式(Decorator)入门与应用详解
2019/12/13 PHP
ajaxControlToolkit AutoCompleteExtender的用法
2008/10/30 Javascript
js左侧多级菜单动态的解决方案
2010/02/01 Javascript
深入理解JavaScript系列(6):S.O.L.I.D五大原则之单一职责SRP
2012/01/15 Javascript
js实现省市联动效果的简单实例
2014/02/10 Javascript
window.returnValue使用方法示例介绍
2014/07/03 Javascript
jQuery实现的输入框选择时间插件用法实例
2015/02/28 Javascript
使用jQuery UI库开发Web界面的简单入门指引
2016/04/22 Javascript
原生javascript 学习之js变量全面了解
2016/07/14 Javascript
vue ssr 指南详读
2018/06/29 Javascript
对于Python的Django框架使用的一些实用建议
2015/04/03 Python
Python实现的计数排序算法示例
2017/11/29 Python
python实现mysql的读写分离及负载均衡
2018/02/04 Python
对Python模块导入时全局变量__all__的作用详解
2019/01/11 Python
对Python协程之异步同步的区别详解
2019/02/19 Python
解决webdriver.Chrome()报错:Message:'chromedriver' executable needs to be in Path
2019/06/12 Python
Python调用scp向服务器上传文件示例
2019/12/22 Python
细说CSS3中box属性中的overflow-x属性和overflow-y属性值的效果
2014/07/21 HTML / CSS
Nordgreen美国官网:在线购买极简主义斯堪的纳维亚手表
2019/07/24 全球购物
Linux中如何用命令创建目录
2015/01/12 面试题
行政副总岗位职责
2014/02/23 职场文书
买卖协议书范本
2014/04/21 职场文书
普通员工辞职信范文
2015/05/12 职场文书
如何让2019年上半年的工作总结更出色!
2019/07/01 职场文书
CSS 圆形进度栏
2021/04/06 HTML / CSS
解决golang在import自己的包报错的问题
2021/04/29 Golang
MySQL和Oracle批量插入SQL的通用写法示例
2021/11/17 MySQL
Win11软件图标固定到任务栏
2022/04/19 数码科技
vue实现input输入模糊查询的三种方式
2022/08/14 Vue.js