java的equals和==区别的底层原理

简介: ==是运算符equals是object的方法区别判断:看对比的是基本数据类型或者引用数据类型

==是运算符


equals是object的方法


区别判断:看对比的是基本数据类型或者引用数据类型


equals


使用场景:用来比较引用数据类型,不能比较基本数据类型


比较的是引用数据类型,有两种情况(一般使用到引用数据类型String会默认重写了)


       equals没有被重写,指向的就是两个对象的地址对比(一般用不到,如果强行使用就先实例化)


       equals被重写后, 比较的就是对象的值的对比(经常使用)


注释:引用数据类型和基本数据类型可以混合对比

package bao;
import java.util.Scanner;
                   //建立在数值相同情况下,也就是都是666
public class one {
    public static void main(String[] args) {
        String a = "666";//引用数据类型
        int b = 666;//基本数据类型
        System.out.println(a.equals(b));//含有基本数据类型,对比地址值,a和b地址不一样,输出false
    }                                   //如果对比的两个都是引用数据类型,对比值,输出true
}

==

比较的是基本数据类型,那么就会比较两个对象的

package three;
public class test2 {
    public static void main(String[] args) {
        int a = 888;//基本数据类型
        int b = 888;//基本数据类型
        System.out.println(a==b);//比较值一样就true
    }
}

比较的是引用数据类型,那么就会比较两个对象的地址值

package three;
public class test2 {
                //重点:引用数据类型值一样就true
    public static void main(String[] args) {
        String a = "小猪";//引用数据类型
        String b = "小猪";//引用数据类型
        System.out.println(a==b);//比较地址值,因为这两个地址被类string重写在同一个地址中了,地址和数据对比一样,true
    }
}

基本数据类型和引用数据类型不能混合比较


直白讲解使用场景:


不同数据类型进行比较用equals(因为==用不了不同数据类型对比)


宽松只对比值用:equals(因为string默认会把他们地址放一起,所以类中地址必定一样,就不用考虑地址了)


严格考虑对地址和值因素影响(具体看使用的是引用数据类型(地址)还是基本数据类型(值))对比使用:==


引用数据类型都是对比地址,基本数据类型都是对比值。equals之所以能被对比值,就是因为被重写了,经典的就是string


谨记:只要出现引用数据类型,那就是对比地址


目录
相关文章
|
20天前
|
Java 调度
Java并发编程:深入理解线程池的原理与实践
【4月更文挑战第6天】本文将深入探讨Java并发编程中的重要概念——线程池。我们将从线程池的基本原理入手,逐步解析其工作过程,以及如何在实际开发中合理使用线程池以提高程序性能。同时,我们还将关注线程池的一些高级特性,如自定义线程工厂、拒绝策略等,以帮助读者更好地掌握线程池的使用技巧。
|
1月前
|
Java
Java isBlank和isEmpty的区别
JavaisBlank和isEmpty的区别
17 0
|
1月前
|
Java Spring 容器
[JavaWeb]——过滤器filter与拦截器Interceptor的使用、执行过程、区别
[JavaWeb]——过滤器filter与拦截器Interceptor的使用、执行过程、区别
|
1月前
|
开发框架 Java API
java反射机制的原理与简单使用
java反射机制的原理与简单使用
17 1
|
27天前
|
缓存 Java C#
【JVM故障问题排查心得】「Java技术体系方向」Java虚拟机内存优化之虚拟机参数调优原理介绍(一)
【JVM故障问题排查心得】「Java技术体系方向」Java虚拟机内存优化之虚拟机参数调优原理介绍
78 0
|
30天前
|
Java
软件工程设计原理里氏替换原则 ,具体实现及JAVA代码举例
里氏替换原则(Liskov Substitution Principle, LSP)是面向对象设计的基本原则之一,由Barbara Liskov提出。这个原则指出,如果类 S 是类 T 的子类型,则程序中使用 T 的对象的地方都可以不经修改地使用 S 的对象。换句话说,子类的对象应该能够替换掉它们的父类对象,而不影响程序的正确性。这个原则强调了继承关系中的行为兼容性,保证了基类和派生类之间的正确抽象和继承关系。
24 3
|
1天前
|
JavaScript 前端开发 Oracle
java和JavaScript的区别
java和JavaScript的区别
6 3
|
15天前
|
运维 NoSQL 算法
Java开发-深入理解Redis Cluster的工作原理
综上所述,Redis Cluster通过数据分片、节点发现、主从复制、数据迁移、故障检测和客户端路由等机制,实现了一个分布式的、高可用的Redis解决方案。它允许数据分布在多个节点上,提供了自动故障转移和读写分离的功能,适用于需要大规模、高性能、高可用性的应用场景。
16 0
|
17天前
|
Java 关系型数据库 MySQL
大厂面试题详解:Java抽象类与接口的概念及区别
字节跳动大厂面试题详解:Java抽象类与接口的概念及区别
40 0
|
23天前
|
Java 开发者
软件工程设计原理接口隔离原则 ,具体实现及JAVA代码举例
【4月更文挑战第7天】接口隔离原则(Interface Segregation Principle, ISP)是面向对象设计原则之一,旨在减少不必要的依赖关系,通过拆分庞大且臃肿的接口为更小、更具体的接口来实现。这个原则强调“客户端不应该被迫依赖于它不使用的接口”,意味着一个类不应该被迫实现它不使用的方法。
16 1