public static void main(String[] args) { String name=null; if("aa".equals(name))//这种情形,不出现空指针异常 //if(a.equals("aa"))//出现空指针异常 { System.out.println(true); } else { System.out.println(false); } } 上面的两句不同的比较语句测试,第一句不出现空指针异常,第二句出现. 所以在变量和常…
我们在重写equals的时候必须满足几个原则,否则,类在容器和其他场景下会出现奇怪的行为: 1.A.equals(A)=true, 2.对称性.即A.equals(B)=true;则B.equals(A)=true;这一点的反例为:我们想要与其他类实现互操作时.比如类A重写equals并且满足A.content.equal(s),其中content和s为字符串类型 ,那么类A就与String相同,但是反过来就不成立,并且当我们List<A> list;判断list.contains(s)时会发…
int 是基本类型,直接存数值,integer是对象,用一个引用指向这个对象 int 是基本数据类型,Integer是类 int类的变量初始为0,Integer的变量则初始化为null. 如果只是用来进行一些加减乘除的运算or作为参数进行传递,那么就可以直接声明为int基本数据类型:如果要像对象一样来进行处理,那么就要用Integer来声明一个对象,因为java是面向对象的语言,因此当声明为对象时能够提供很多对象间转换的方式,与一些常用 的方法. public static void main(…
我们知道,Object类是所有类的父类,因此也被称为根类.祖先.那么,我们就来看一看Object类的最常用的两个方法是如何用的. 1.toString方法: Object类的toString()方法默认返回的是对象地址值,如果某个类的toString()方法返回的不是对象地址值,则说明这个类重写了toString()方法. public class Test5 { public static void main(String[] args) { Person p1=new Person(); S…
一.简介 ==: == 比较的是变量(栈)内存中存放的对象的(堆)内存地址,用来判断两个对象的地址是否相同,即是否是指相同一个对象.比较的是真正意义上的指针操作. 1.比较的是操作符两端的操作数是否是同一个对象.2.两边的操作数必须是同一类型的(可以是父子类之间)才能编译通过.3.比较的是地址,如果是具体的阿拉伯数字的比较,值相等则为true,如:int a=10 与 long b=10L 与 double c=10.0都是相同的(为true),因为他们都指向地址为10的堆. equals: e…
前言 大家好啊,我是汤圆,今天给大家带来的是<Java中的equals()和hashCode() - 详细篇>,希望对大家有帮助,谢谢 文章纯属原创,个人总结难免有差错,如果有,麻烦在评论区回复或后台私信,谢啦 简介 说到equals和hashCode,首先要说下Object 我们都知道,这个Object是Java所有类的超类,其他类都是从Object直接或间接继承而来的 而Object中自带的equals和hashCode方法就是今天我们要谈论的话题 目录 什么是equals()方法 什么是…
  0 正确的equals方法 public class MyClass { // 主要属性1 private int primaryAttr1; // 主要属性2 private int primaryAttr2; // 可选属性 private int optionalAttr; // 延迟加载,缓存散列码 private volatile int hashCode = 0; @Override public int hashCode() { if(hashCode == 0) { int …
如下代码,Long 和Integer 进行比较: Integer aa = 1; Long bb= 1L; System.out.println(aa.equals(bb)); 输出为:false 查看Integer 的equals 方法 public boolean equals(Object obj) { if (obj instanceof Integer) { return value == ((Integer)obj).intValue(); } return false; } equ…
1,一般我们自己用时,只使用equals()方法,用于判断两个对象是否是业务上等价的.2,在重写equals()方法时,强烈推荐也要重写hashCode()方法,因为有的集合用到了hashCode()来提高效率. equals为true的对象的hashCode值一定要一样. equals为false的对象的hashCode值尽量不一样.3,可以使用工具自动生成hashCode()与euqals()方法. package com.zsy.study; public class User { pri…
一:== 和 equals == 比较引用的地址equals 比较引用的内容 (Object 类本身除外) String obj1 = new String("xyz"); String obj2 = new String("xyz"); // If String obj2 = obj1, the output will be true if(obj1 == obj2) System.out.printlln("obj1==obj2 is TRUE&quo…