String类中Equals方法和Object类中的Equals方法有什么不同?

如题所述

第1个回答  2019-07-20
没什么不同。。。所有类都是object的子类。。。。String的equals是重写的父类的
第2个回答  2019-10-10
在Java中,每一个对象都有一个地址空间,在这空间保存着这个对象的值。
equals
比较的是值,==比较的地址以及值。
用下面的例子来说明。
String
str1
=
"aaa";
String
str2
=
"aaa";
String
str3
=
new
String("aaa");
str1与str2使用的是同一地址空间,因为String使用的是对象池,对象池概念你再去百度一下。
而str3是new出来的,就相当于开辟了新的空间,地址也就跟str1,str2不一样的。
所以,下面输出的结果为:
System.out.println(str1.equals(str2));
--true,地址一样,值也一样
System.out.println(str1.equals(str3);
--true,地址不一样,但是值一样
System.out.println(str1
==
str2);
--true,地址一样,值也一样
System.out.println(str1
==
str3);
--false,地址不一样,值一样,还是false
第3个回答  2019-09-07
在比较两个String对象的内容是否相同时是使用equals方法的
如:String
str1=new
String(“A”);
String
str2=new
String(“B”);
String
str3=new
String(“B”);
boolean
result1=
str1.equals(str2);
boolean
result2=
str1.equals(str3);
System.out.println(result1);
System.out.println(result2);
则输入的result1为false,result2为true。因为str1与str2的内容不相同,而str2与stR3内容相同都是“B”。
而在String类中使用“==”时,比较的是两个String对象的引用是否指向同一个对象,如
String
str4=new
String(“B”);
String
str5=new
String(“B”);
String
str6=str5;
boolean
result3=(str4==str5);
boolean
result4=
(str5==str6);
System.out.println(result3);
System.out.println(result4);
则输入的result3为false,result4为true。因为str4、str5虽然内容相同但它们是不同的对象,就像两个同样的杯子装着同样多的水,可它们是不同的,result3为false。而str5、str6是指向同一个String对象的,所以result4为true。
再说明一点,String
str
=
new
String("abc")和String
str
="abc"是有一点小区别的,对于new出来的String对象,是每new一个内存里生成一个,也就是说其允许存在内容相同的重复对象。而String
str
="abc"这种形式是不允许存在内容相同的重复对象,只要内存已经存在了,就不再新生成,而是把新的引用指向原来的对象。
第4个回答  2018-09-07
在比较两个String对象的内容是否相同时是使用equals方法的
如:String str1=new String(“A”);
String str2=new String(“B”);
String str3=new String(“B”);
boolean result1= str1.equals(str2);
boolean result2= str1.equals(str3);
System.out.println(result1);
System.out.println(result2);
则输入的result1为false,result2为true。因为str1与str2的内容不相同,而str2与stR3内容相同都是“B”。
而在String类中使用“==”时,比较的是两个String对象的引用是否指向同一个对象,如
String str4=new String(“B”);
String str5=new String(“B”);
String str6=str5;
boolean result3=(str4==str5);
boolean result4= (str5==str6);
System.out.println(result3);
System.out.println(result4);
则输入的result3为false,result4为true。因为str4、str5虽然内容相同但它们是不同的对象,就像两个同样的杯子装着同样多的水,可它们是不同的,result3为false。而str5、str6是指向同一个String对象的,所以result4为true。
再说明一点,String str = new String("abc")和String str ="abc"是有一点小区别的,对于new出来的String对象,是每new一个内存里生成一个,也就是说其允许存在内容相同的重复对象。而String str ="abc"这种形式是不允许存在内容相同的重复对象,只要内存已经存在了,就不再新生成,而是把新的引用指向原来的对象。
相似回答
大家正在搜