Java中==和equals(),equalsIgnoreCase()

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/LittleMangoYX/article/details/83312398

关于==和equals,我们需要知道java中的数据类型,可分为两类:

1.基本数据类型,也称原始数据类型。byte,short,char,int,long,float,double,boolean 
他们之间的比较,应用双等号(==),比较的是他们的值。 
2.复合数据类型(类) 
当他们用(==)进行比较的时候,比较的是他们在内存中的存放地址,所以,除非是同一个new出来的对象,他们的比较后的结果为true,否则比较后结果为false。
对于复合数据类型之间进行equals比较,在没有覆写equals方法的情况下,他们之间的比较还是基于他们在内存中的存放位置的地址值的,因为Object的equals方法也是用双等号(==)进行比较的,所以比较后的结果跟双等号(==)的结果相同。

String a = new String("hello");
String b = "hello";
String c = "hello";
 
System.out.println("a==b: " + (a==b));  \\1
System.out.println("a.equals(b): " + a.equals(b));  \\2
System.out.println("b==c: " + (b==c));  \\3

1:    false
2:    true
3:    true

String b = "hello";和String c = "hello";对于这样的类型的声明方式(不是new出来的)串池把他们看做一个对象,所以池中只存储一份,只是有a和b两个引用罢了。
对于String只要用new关键字new出来的string,都是单独的一个对象,而“==”号,他是用来比较对象的内存地址,所以只要用==号来比较string,只要不是自己比自己,那肯定是false。

JAVA中字符串比较equals()和equalsIgnoreCase()的区别:
1.equals()函数:
    主要是区分“比较的字符串” 大小写和长度时候相同,比较的类型可以是Object类型。

2.equalsIgnoreCase()函数:
    比较的参数只能是字符串,这里只要字符串的长度相等,字母的大小写是忽略的。认为A-Z和a-z是一样的。

猜你喜欢

转载自blog.csdn.net/LittleMangoYX/article/details/83312398