java中比较对象

hj0612      2022-06-04     690

关键词:

基本类型

基本对象比较值.
当基本类型与对应的包装类比较时,值相等就相等.因为包装类会拆箱为基本类型.

引用类型

==和equals()比较的是两个对象引用是否相等.
如果需要通过两个对象的属性是否相等,需要重写Object的equals()方法.

字符串比较

因为字符串池(string pool)的存在,字符串的比较有很大不同.

通过==比较

看两段代码

public class Main {

   public static void main(String[] args) {

       String s1 = "CodeGym is the best website for learning Java!";
       String s2 = new String("CodeGym is the best website for learning Java!");
       System.out.println(s1 == s2);
   }
}

返回 false

public class Main {

   public static void main(String[] args) {

       String s1 = "CodeGym is the best website for learning Java!";
       String s2 = "CodeGym is the best website for learning Java!";
       System.out.println(s1 == s2);
   }
}

返回 true
每当我们通过String str = "...................."创建字符串时,程序会检查string pool是否存在相同的字符串.如果存在,则不会创建新字符串,并将str的引用指向string pool中相同字符串的地址.
现在来看第2段代码:

String s1 = "CodeGym is the best website for learning Java!";
String s2 = "CodeGym is the best website for learning Java!";

s2指向的地址和s1相同.s1在string pool中创建一个新字符串.s2引用指向s1在string pool的地址.
那么第一段代码没什么方法false呢?因为通过new关键字创建的字符串是存储在内存堆中.

通过equals()比较

在String类中重写了Object的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;
}

可以看到在String.equals()方法中是比较字符串中每个字符.

记住要使用equals()来比较字符串.

java对象的比较(代码片段)

java对象比较文章目录java对象比较元素的比较类的比较比较方法重写equals方法基于Comparble接口类的比较基于比较器比较基于比较器比较:Comparator接口三种比较方式的对比元素的比较在java中,基本类型的对象可以直接比较大小... 查看详情

java示例代码_在Joda Time中正确比较DateTime或MutableDateTime对象

java示例代码_在Joda Time中正确比较DateTime或MutableDateTime对象 查看详情

java比较器

1.Java比较器的使用背景:Java中的对象,正常情况下,只能进行比较:==或!=。不能使用>或<的但是在开发场景中,我们需要对多个对象进行排序,言外之意,就需要比较对象的大小。如何实现?使用两个接口中的任何一个:Co... 查看详情

在 Java 中使用“<”或“>”运算符比较两个对象

】在Java中使用“<”或“>”运算符比较两个对象【英文标题】:Comparetwoobjectswith"<"or">"operatorsinJava【发布时间】:2015-03-2104:18:20【问题描述】:如何使用“”使Java中的两个对象具有可比性例如MyObject<Stri... 查看详情

java中如何比较两个数组确定是不是相等?

...的,不相等。最后我改成了secret[0]==input[0]这样一个一个比较,然后答案便是相等了。请问这是为什么呢?有没有办法用一个式子就能确定相等?java比较两个字符串是否相等可以用equals方法或者是“==”。equals方法常常用来比较... 查看详情

java:比较两个对象中全部属性值是否相等

点击关注公众号,实用技术文章及时了解来源:xiaoer.blog.csdn.net/article/details/85005295例如下述Java类:import java.io.Serializable;import java.util.List;public class Bean_Topology implements Serializable   查看详情

java中compareable和comparator两种比较器的区别

Java中Compareable和Comparator两种比较器的区别1.引言  在java这个处处是对象的世界里,对两个对象进行按某一属性进行比较是特别常见的需求。比如书店中的书按照价格比较,亦或者是学生按照成绩进行排名等等。对于JDK8而言,... 查看详情

java比较两个对象是否相等?

1.判断两个对象是否是同一个引用对象则用==,"=="比的是地址.因为如果地址相同,则就是同一个对象(java中如果两对象(obj1,obj2)相等,那么在修改obj2的时候,obj1的值也会改变。其实相当于内存中只有一个对象,而obj1和obj2连个... 查看详情

比较java中数组的元素

...值观。我需要将存储对象的属性与第二个数组的元素进行比较。在我下面发布的代码中,我需要将对象的第5个值与第二个数组的元素进行比较。如果值更大,则提出一种方法。有什么建议?ParkedCara1=newParkedCar("Toyota","Camry","Blue",6... 查看详情

java中两个long对象如何比较是否相等(代码片段)

...义的是对象,后者定义的是long类型的变量。但是今天在比较两个Long类型值的时候碰到一个坑,如下: 问题如下Longa=4l;Longb=4l;a==b//trueLonga=128l;Longb=128l;a==b//false 如果Long的值在[-127,128]之间,用“==” 查看详情

java对象的比较数据结构(代码片段)

目录对象值相等的比较==&equals对象大小的比较基于Comparable接口类基于Comparator比较器三种比较方式总结对象值相等的比较==&equals==是用来比较对象身份的,而equals一般是用来比较对象的内容的但equals若... 查看详情

java对象的比较(topk问题)(代码片段)

文章目录一、元素的比较1.基本类型的比较2.对象的比较二、对象比较1.重写基类的equal2.基于Comparble接口类的比较3.Comparator接口(比较器)4.三种方式对比三、集合框架中PriorityQueue的比较方式1.构造方法(1)无参构造(2)带有... 查看详情

java中==和equals区别

转自:http://www.java265.com/JavaCourse/202204/3161.html比较相等,是日常开发中必不可少的一种操作,那么两种相等有什么不同呢?如:有时候需比较两个对象是不是同一个对象,有时候需比较两个对象中的值是否一致下文笔者讲述java中==... 查看详情

java中的几种比较器,对象比较,二维数组排序

Java中的几种比较器一般涉及到对象数组的排序时,我们需要比较数组中的对象进行我们想要的排序。情况一对象简单,仅仅只是比较两个引用指向同一个对象,对象的地址是否相同。用“==”即可实现情况二如... 查看详情

比较java中的两个列表对象(代码片段)

我有以下简单的java程序来比较列表中的两个对象。publicstaticvoidmain(String[]args)UserInfouser=newUserInfo();user.setDomainId(2);user.setId("sxpadmin");user.setStatus("active");UserInfouser1=newUserInfo();user1.setDomainId 查看详情

java中的几种比较器,对象比较,二维数组排序(代码片段)

Java中的几种比较器一般涉及到对象数组的排序时,我们需要比较数组中的对象进行我们想要的排序。情况一对象简单,仅仅只是比较两个引用指向同一个对象,对象的地址是否相同。用“==”即可实现情况二如... 查看详情

java中怎么比较两个字符串是不是相等?

JAVA比较两个字符串是否相等可以用equals方法或者是“==”。equals方法常常用来检测两个对象是否相等,即两个对象的内容是否相等,如果只是比较对象的内容,而不比较对象来源和功能类型时,常用此方法。“==”常用于用于比... 查看详情

java_stringstringbuilder

...oString方法。APIjava1.6提取码:04b6equals方法equals方法,用于比较两个对象是否相同,它其实就是使用两个对象的内存地址在比较。Object类中的equals方法内部使用的就是==比较运算符。在开发中要比较两个对象是否相同,经常会根据... 查看详情