java判断相等
一.字符串
1.equals():比较内容,推荐
String a=new String("abc"); String b=new String("abc"); a.equals(b);
2.= = :比较地址
String c="123"; String d="123"; System.out.println(c==d); //true,在java中字符串的值是不可改变的,相同的字符串在内存中只会存一份,所以a和b指向的是同一个对象;
String a=new String("abc"); String b=new String("abc"); System.out.println(c==d); //false,此时a和b指向不同的对象。
= =是比较内存地址的,内存地址相等,就返回true,地址相等,值肯定也一样,地址不相等,即使值相等也会返回false,
字符串是对象类型,所以不能用简单的“==”判断。
而用equals()方法,String中重写了equals,不管地址是否相等,都只对值进行比较,值相等就返回true,不相等就返回false。两个String对象相等或内容相等都返回true
二.基本数据类型和包装类
以int和Integer为例:
java中的基本数据类型判断是否相等,直接使用"=="就行了,相等返回true,否则,返回false。
当用“==”进行比较时,jvm默认是比较数据在java堆的地址。
int i = 10; int j = 10; System.out.print(i == j);
Integer是对象,推荐使用equals方法进行相等比较。
Integer g = 128; Integer h = 128; System.out.println(g.equals(h));
Integer是int的包装类;int是基本数据类型; Integer变量必须实例化后才能使用;int变量不需要;
Integer实际是对象的引用,指向此new的Integer对象;int是直接存储数据值 ;Integer的默认值是null;int的默认值是0。
三.数组
使用 equals ()方法来判断数组是否相等:Arrays.equals(ary, ary1)
import java.util.Arrays; int[] ary = {1,2,3,4,5,6}; int[] ary1 = {1,2,3,4,5,6}; System.out.println(Arrays.equals(ary, ary1));
四.List
使用 equals ()方法或
public static boolean isEquals(List<String> list1,List<String> list2){ if(null != list1 && null != list2){ if(list1.containsAll(list2) && list2.containsAll(list1)){ return true; } return false; } return true; }