java中所有类都是Object的子类吗? 谁能给我讲讲==和equals的区别? 还有equals为什么在String类型中比较

2024年11月02日 16:10
有5个网友回答
网友(1):

没错,所有类都是Object子类。自己写的也是,只是隐藏罢了。equals只要值相等即可,==可理解为不但值相等,地址也要相等(针对对象)。因为String不是基本类型,他相当于指针。重写equals,表示内容相同即可,hashcode是针对字符串本身,而不是地址。
例如:
String p="123",q="123"; 此处equals和==结果相同
String p=new String("123"),q=new String("123"); 结果不同,p、q指向不同对象

网友(2):

一:java 中所有的类都是Object 的子类。
二:(1)八大基本类型只能用"=="比较不能用equals比较。(2)对于基本类型的包装类型,比如Boolean、Character、Byte、Shot、Integer、Long、Float、Double等的引用变量,==是比较地址的,而equals是比较内容的。(3)对于字符串变量来说,使用“= =”和“equals()”方法比较字符串时,其比较方法不同。
“= =”比较两个变量本身的值,即两个对象在内存中的首地址。
“equals()”比较字符串中所包含的内容是否相同。
三:重写equals 方法是为了方便比较,自己怎么定义就怎么比较。按java 代码规范来说,bean 类里面,一般要重写三个方法 1、hashcode(),2、equals(),3、toString().

网友(3):

== 是判断两个对象是否为同一个对象,即在内存中是否在同一地址。
而 equals方法是用于比较两个对象的内容是否相同,具体比较哪些内容由类自己实现,如果不实现equals方法的话,同样可以调用此方法,只是这时equals等价于 ==。
而String类实现了equals方法,它比较两个字符串的内容是否一样,如:
String a = "abc";
String b = a;
String c = "abc";
上面的例子中:
(1) a == b
(2) a != c b != c
(3) a equals b, a equals c, b equals c
现在明白了吧!
hashCode和equals是不同的方法,作用也不一样。
不equals或不==的对象的hashCode肯定不一样 ,而具有相同hashCode的对象不一定equals或==,因为哈希值有冲突,所以我们只能用hashCode来判断两个对象不同,而不能用来判断两个对象相同

网友(4):

所有类都从Object类继承。如果你定义的类没有覆盖toString方法,则对象在调用toString方法时用的是Object类toString方法,返回的是“类名@hashcode".

同理,如果equals没有被覆盖,作用则是判断两个对象是否相同。

String类会覆盖上面两个方法,toString返回自身。equals则用于判断两个字符串的字符是否全部一样。所以我们在判断两个字符串是否一样时用的是equals。而用 == 号则会判断两个对象是否一样,得到错误的结果。

例子如下:

package yangguo.snakegame;
import java.awt.FlowLayout;
public class Test
{
public static void main( String[] args ) throws Exception
{

Test test = new Test();
Test test2 = new Test();
String word = new String("it is a pratics");
String word2 = new String("it is a pratics");

System.out.println(test.toString());
System.out.println(test.equals(test2));

System.out.println(word.toString());

System.out.println(word.equals(word2));
}
}

//output
yangguo.snakegame.Test@ca0b6
false
it is a pratics
true
另外,团IDC网上有许多产品团购,便宜有口碑

网友(5):

所有类都从Object类继承。如果你定义的类没有覆盖toString方法,则对象在调用toString方法时用的是Object类toString方法,返回的是“类名@hashcode".

同理,如果equals没有被覆盖,作用则是判断两个对象是否相同。

String类会覆盖上面两个方法,toString返回自身。equals则用于判断两个字符串的字符是否全部一样。所以我们在判断两个字符串是否一样时用的是equals。而用 == 号则会判断两个对象是否一样,得到错误的结果。

例子如下:

package yangguo.snakegame;
import java.awt.FlowLayout;
public class Test
{
public static void main( String[] args ) throws Exception
{

Test test = new Test();
Test test2 = new Test();
String word = new String("it is a pratics");
String word2 = new String("it is a pratics");

System.out.println(test.toString());
System.out.println(test.equals(test2));

System.out.println(word.toString());

System.out.println(word.equals(word2));
}
}

//output
yangguo.snakegame.Test@ca0b6
false
it is a pratics
true