equals_equalsignorecase - CSDN
equals 订阅
《同等族群》是由德雷克·多雷穆斯执导,尼古拉斯·霍尔特、克里斯汀·斯图尔特联合主演的科幻爱情片。该片于2016年7月1日在美国上映。该片讲述在一个完美无缺却无感情的世界里,人类情感被去除,两个因患病而有了情感的人相遇,产生情愫,最后决定携手逃亡的故事 [1]  。 展开全文
《同等族群》是由德雷克·多雷穆斯执导,尼古拉斯·霍尔特、克里斯汀·斯图尔特联合主演的科幻爱情片。该片于2016年7月1日在美国上映。该片讲述在一个完美无缺却无感情的世界里,人类情感被去除,两个因患病而有了情感的人相遇,产生情愫,最后决定携手逃亡的故事 [1]  。
信息
制片地区
美国
主    演
尼古拉斯·霍尔特,克里斯汀·斯图尔特,盖·皮尔斯
上映时间
2016年7月1日(美国)
色    彩
彩色
导    演
德雷克·多雷穆斯
其它译名
完人世界(台湾)、对等物、完人世界
类    型
剧情、爱情、科幻
拍摄日期
2014年8月4日
中文名
同等族群
片    长
101分钟
imdb编码
tt3289728
外文名
Equals
编    剧
内森·帕克
对白语言
英语
制片人
迈克尔·谢弗
拍摄地点
日本、新加坡
c语言简介
收起全文
精华内容
参与话题
  • equals

    千次阅读 2019-08-01 15:41:37
    重写equals方法 在object类中equals方法只能用来比较地址是否一样 public boolean equals(Object obj) { return (this == obj); } String可以使用equals比较地址是因为它重写了equals方法 public boolean equals...

    重写equals方法

    在object类中equals方法只能用来比较地址是否一样

    public boolean equals(Object obj) { 
        return (this == obj);
    }
    

    String可以使用equals比较地址是因为它重写了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;
    }
    

    当我们遇到自己想比较自己创建对象的属性时,就可以自己重写equals方法

    例如:我们需要比较学生对象里面的值是否一样,肯定不能比较地址,那我们就可以重写equals方法来比较对象里面的两个属性name和学号

    /**
     * 学生类
     * @author wgy
     *
     */
    public class Student extends Object{
    	String stuNo;
    	String stuName;
    	int age;
    	
    	public void show() {
    		System.out.println("学号:"+stuNo+" 姓名:"+stuName+" 年龄:"+age);
    	}
        @Override
    	public boolean equals(Object obj) {
    		if(obj==null) {
    			return false;
    		}
    		//强制类型转换
    		Student stu=(Student)obj; //NullPointerException
    		//比较学号和姓名
    		if(this.stuNo.equals(stu.stuNo)&&this.name.equals(stu.name)) {
    			return true;
    		}
    		
    		return false;
    	}
    }
    
    
    public class Test {
    	public static void main(String[] args) {
    		Student zhangsan=new Student();
    		zhangsan.stuNo="bj1805";
    		zhangsan.stuName="xxx";
    		zhangsan.age=20;
    		
    		Student lisi=new Student();
    		lisi.stuNo="bj1805";
    		lisi.stuName="xxx";
    		lisi.age=20;
    		
    		boolean b=zhangsan.equals(lisi);
    		boolean b2=zhangsan==lisi;
    		System.out.println(b);
    		System.out.println(b2);
    	
    	}
    }
    
    展开全文
  • 优美的讲解equals和==的区别

    万次阅读 多人点赞 2018-06-02 18:49:44
    初步了解在JVM中的内存分配知识 在JVM中,内存分为堆内存跟栈内存。他们二者的区别是: 当我们创建一个对象(new Object)时,就会调用对象的构造函数来开辟...初步认识equals与==的区别: ==是判断两个变量或实...
    初步了解在JVM中的内存分配知识

            在JVM中,内存分为堆内存跟栈内存。他们二者的区别是: 当我们创建一个对象(new Object)时,就会调用对象的构造函数来开辟空间,将对象数据存储到堆内存中,与此同时在栈内存中生成对应的引用,当我们在后续代码中调用的时候用的都是栈内存中的引用。还需注意的一点,基本数据类型是存储在栈内存中。

    初步认识equals与==的区别:

    1.  ==是判断两个变量或实例是不是指向同一个内存空间,equals是判断两个变量或实例所指向的内存空间的值是不是相同 
    2. ==是指对内存地址进行比较 , equals()是对字符串的内容进行比较
    3. ==指引用是否相同, equals()指的是值是否相同
     用一张图可以简要的表现他们之间的关系:



    代码测试一:


    equals与==的区别详解:

            == 比较的是变量(栈)内存中存放的对象的(堆)内存地址,用来判断两个对象的地址是否相同,即是否是指相同一个对象。比较的是真正意义上的指针操作。equals用来比较的是两个对象的内容是否相等,由于所有的类都是继承自java.lang.Object类的,所以适用于所有对象,如果没有对该方法进行覆盖的话,调用的仍然是Object类中的方法,而Object中的equals方法返回的却是==的判断。String s="abcd"是一种非常特殊的形式,和new 有本质的区别。它是java中唯一不需要new 就可以产生对象的途径。以String s="abcd";形式赋值在java中叫直接量,它是在常量池中而不是象new一样放在压缩堆中。 这种形式的字符串,在JVM内部发生字符串拘留,即当声明这样的一个字符串后,JVM会在常量池中先查找有有没有一个值为"abcd"的对象,如果有,就会把它赋给当前引用.即原来那个引用和现在这个引用指点向了同一对象, 如果没有,则在常量池中新创建一个"abcd",下一次如果有String s1 = "abcd";又会将s1指向"abcd"这个对象,即以这形式声明的字符串,只要值相等,任何多个引用都指向同一对象.
       而String s = new String("abcd");和其它任何对象一样.每调用一次就产生一个对象,只要它们调用。
    也可以这么理解: String str = "hello"; 先在内存中找是不是有"hello"这个对象,如果有,就让str指向那个"hello".

    如果内存里没有"hello",就创建一个新的对象保存"hello". String str=new String ("hello") 就是不管内存里是不是已经有"hello"这个对象,都新建一个对象保存"hello"。

    代码测试二:


            

    展开全文
  • 在java中==和equals()的区别

    万次阅读 多人点赞 2020-07-20 15:29:12
    在Java学习和面试中经常遇到这个问题,虽然想着简单,但还是决定记录下来,毕竟菜嘛...... ==: ==是直接比较的两个对象的堆内存地址,如果相等,则说明这两个引用实际是指向同一个对象地址的。...

    在Java学习和面试中经常遇到这个问题,虽然想着简单,但还是决定记录下来,毕竟菜嘛......

    ==:

    ==是直接比较的两个对象的堆内存地址,如果相等,则说明这两个引用实际是指向同一个对象地址的。但是我们又常常碰到这样一个问题

    最终结果是 true,true,false,那既然==是比较的地址,那么int数据的地址是怎样的呢,String又是怎样的呢?

    对于基本数据类型(byte,short,char,int,float,double,long,boolean)来说,他们是作为常量在方法区中的常量池里面以HashSet策略存储起来的,对于这样的字符串 "123" 也是相同的道理,在常量池中,一个常量只会对应一个地址,因此不管是再多的 123,"123" 这样的数据都只会存储一个地址,所以所有他们的引用都是指向的同一块地址,因此基本数据类型和String常量是可以直接通过==来直接比较的。

    另外,对于基本数据的包装类型(Byte, Short, Character,Integer,Float, Double,Long,  Boolean)除了Float和Double之外,其他的六种都是实现了常量池的,因此对于这些数据类型而言,一般我们也可以直接通过==来判断是否相等。那么再出一个问题考考大家 ↓

    猜猜看,结果是啥?。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

     

    结果是 true,false。没想到吧!其实是因为 Integer 在常量池中的存储范围为[-128,127],127在这范围内,因此是直接存储于常量池的,而128不在这范围内,所以会在堆内存中创建一个新的对象来保存这个值,所以m,n分别指向了两个不同的对象地址,故而导致了不相等。

    equals方法:

    之前在网上也搜了很多相关的问题,但给出的答案却不尽人意,很多网友都说equals比较的是对象的内容,这样的说法是不准确的。首先我们来看看在Object类中定义的equals方法 ↓

    可以看到,在Object类型的equals方法是直接通过==来比较的,和==是没有任何区别的。

    那么为什么又要说equlas和==的区别呢?是因为equals方法是可以由我们自己重写的。

    众所周知,我们所有的类都直接或间接地继承自java.lang.Object类,因此我们可以通过重写equals方法来实现我们自己想要的比较方法。来看看eclipse为我们自动生成的equals方法 ↓

    可以看出,eclipse还是很智能的,它首先是判断两个对象的地址是否相等,若不相等再进行下面的成员变量判断。

    但这个方法体是完全可以由我们自己实现的,即便是我们直接 return true 都是可以的,只要能满足我们的业务需求,怎样写都是无所谓的,因此,equals比较的并不一定是对象的内容,它还可以由其他的信息来指导比较。

    文中不当之处欢迎大佬们指教或提出异议。

    展开全文
  • 正确使用 equals 方法

    千次阅读 2019-07-23 15:41:33
    Object的equals方法容易抛空指针异常,应使用常量或确定有值的对象来调用 equals。 举个例子: // 不能使用一个值为null的引用类型变量来调用非静态方法,否则会抛出异常 String str = null; if (str.equals(...

    Object的equals方法容易抛空指针异常,应使用常量或确定有值的对象来调用 equals。

    举个例子:

    // 不能使用一个值为null的引用类型变量来调用非静态方法,否则会抛出异常
    String str = null;
    if (str.equals("SnailClimb")) {
      ...
    } else {
      ..
    }

    运行上面的程序会抛出空指针异常,但是我们把第二行的条件判断语句改为下面这样的话,就不会抛出空指针异常,else 语句块得到执行。:

    "SnailClimb".equals(str);// false 

    不过更推荐使用 java.util.Objects#equals(JDK7 引入的工具类)。

    Objects.equals(null,"SnailClimb");// false

    我们看一下java.util.Objects#equals的源码就知道原因了。

    public static boolean equals(Object a, Object b) {
            // 可以避免空指针异常。如果a==null的话此时a.equals(b)就不会得到执行,避免出现空指针异常。
            return (a == b) || (a != null && a.equals(b));
        }

    注意:

    Reference:Java中equals方法造成空指针异常的原因及解决方案

    • 每种原始类型都有默认值一样,如int默认值为 0,boolean 的默认值为 false,null 是任何引用类型的默认值,不严格的说是所有 Object 类型的默认值。
    • 可以使用==或者!=操作来比较null值,但是不能使用其他算法或者逻辑操作。在Java中null==null将返回true。
    • 不能使用一个值为null的引用类型变量来调用非静态方法,否则会抛出异常
    展开全文
  • equals方法

    万次阅读 2018-08-11 13:17:00
    因为Java中所有类都继承自Object类,所以Java中的所有对象都有equals方法。 /** * Object类默认的equals()方法 */ public boolean equals(Object obj) { return (this == obj); } 重写equals方法 Object的...
  • equals和==

    万次阅读 2019-03-25 19:48:32
    【声明】 欢迎转载,但请保留文章原始出处→_→ ...平时在学Android和Java语言的时候,总是碰到“equals”和“==”这两个字符,老感觉差不多;其实还是有一些区别的,今天干脆把它们彻底弄清楚...
  • 【Java基础】4 equals()

    2020-10-18 22:09:45
    Q:== 和 equals 的区别? ==:运算符 对于基本数据类型,比较数值是否相等; 对于引用类型,比较对象内存地址是否相同。 equals():Object 类的方法,用于比较两个对象是否相等,不能比较基本数据类型。 默认...
  • Java中的equals()方法

    万次阅读 2019-03-18 19:50:14
    equals()在哪里 首先我们知道Java中Object类是所有类的父类,它里面定义了equals()方法: public boolean equals(Object obj) { return (this == obj); } 可以看到是使用"“来...
  • ==和equals

    千次阅读 2019-01-10 16:14:28
    == 是运算符 equals 是方法 方法可以被重写 == 和 equals 比较的都是地址 举个栗子: String这个引用类型 在JVM里,考虑到垃圾回收(Garbage Collection)的方便,将heap(堆)划分为三部分:young ...
  • == 和 equals 的区别

    万次阅读 多人点赞 2020-02-04 16:21:18
    == 和 equals 的区别是什么? 使用 == 比较 Java中的8种基本数据类型(byte,short,char,int,long,float,double,boolean)比较他们之间的值是否相等。 引用数据类型,比较的是他们在堆内存地址是否相等。每新new一...
  • contains()和equals()方法的区别?

    万次阅读 2019-04-30 16:52:18
    equals( ) boolean equals(Object anObject) :将此字符串与指定的对象比较。 字面意思就是:判断它俩(指定元素与括号中)内容是否相等. 举个简单的小例子说明下: public class Demo01 { public static voi.....
  • 关于==和equals的区别和联系,面试这么回答就可以

    万次阅读 多人点赞 2018-07-12 09:23:47
    长篇大论的话,我这里就不多写了,相信大家入门java 的时候就知道个大概了,这里想表述的是,如果面试官问你《关于==和equals的区别》,该怎么回答完美呢?可以这样说总结的来说: 1)对于==,比较的是值是否相等 ...
  • hashCode()相同,equals() 也一定为 true吗?

    万次阅读 热门讨论 2020-10-04 19:59:49
    两个对象hashCode()相同,equals() 也一定为 true吗? 首先,答案肯定是不一定。同时反过来equals为true,hashCode也不一定相同。 类的hashCode方法和equals方法都可以重写,返回的值完全在于自己定义。 ...
  • StringUtils.equals() 用法

    万次阅读 2014-04-14 08:57:22
    /*1. 比较两个字符串是否相等,如果两个均为... StringUtils.equals("", ""); //结果是true    StringUtils.equals(null, null); //结果是true    StringUtils.equals(null, ""); //结果是true    StringUtils
  • 为什么重写equals一定要重写hashcode?

    万次阅读 多人点赞 2020-06-19 22:24:31
    大家都知道,equals和hashcode是java.lang.Object类的两个重要的方法,在实际应用中常常需要重写这两个方法,但至于为什么重写这两个方法很多人都搞不明白,以下是我的一些个人理解。 这是Object类关于这两个方法...
  • Java中Object类的equals方法

    千次阅读 2016-09-03 20:46:28
    所有类都从Object类中继承了equals方法 Object类中equals方法源代码如下: public boolean equals(Object obj) { return this == obj; } Object中的equals方法是直接判断this和obj本身的值是否相等,即用来...
  • Java中equals()和contains()的区别

    万次阅读 2017-04-18 15:06:22
    最近用到了equals和contains两个方法,两个都有对比的意思,但区别呢?在网上找了些资料,似乎大概能分清了。 首先是文档上的内容: equals public boolean equals(Object obj) 指示其他某个对象是否与此...
  • Java重写equals方法实现去重

    万次阅读 2017-04-25 18:13:10
    我们经常会遇到一些业务,要对数据进行去重,我们可能首先想到的就是重写equals方法,但是结果却不尽人意,这是为啥呢?其实还需要重写hashCode方法,因为光重写equals方法是不够的 public class Test { private...
  • JAVA中字符串比较equals()和equalsIgnoreCase()的区别

    万次阅读 多人点赞 2012-11-11 16:28:41
    1、使用equals( )方法比较两个字符串是否相等。它具有如下的一般形式: boolean equals(Object str) 这里str是一个用来与调用字符串(String)对象做比较的字符串(String)对象。如果两个字符串具有相同的字符和...
  • 所以要在方法里面重写方法public boolean equals(Object obj){ //代码段,一般对比对象里面的变量即可 //以及对比一些函数巴拉巴拉 }如果是说重写了的equals方法,最好重写hashCode方法 IDEA中,可以在类中使用...
1 2 3 4 5 ... 20
收藏数 883,453
精华内容 353,381
关键字:

equals