java中所有类都是Object的子类吗? 谁能给我讲讲==和equals的区别? 还有equals为什么在String类型中比较
发布网友
发布时间:2022-04-29 01:11
我来回答
共5个回答
热心网友
时间:2023-09-30 09:56
没错,所有类都是Object子类。自己写的也是,只是隐藏罢了。equals只要值相等即可,==可理解为不但值相等,地址也要相等(针对对象)。因为String不是基本类型,他相当于指针。重写equals,表示内容相同即可,hashcode是针对字符串本身,而不是地址。
例如:
String p="123",q="123"; 此处equals和==结果相同
String p=new String("123"),q=new String("123"); 结果不同,p、q指向不同对象追问String p=new String("123"),q=new String("123");
这个equals和==的结果一样吗? 结果是什么?p,equalsq 和p==q结果是什么 不要调试 直接告诉我结果
追答equals结果一样,比较的是内容。==不一样,比较的是地址。
热心网友
时间:2023-09-30 09:57
一: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().追问你回答的比较详细,因为我是初学者,感觉到 有的方法需要返回什么样的值比较麻烦,因为我没有经验,不知道返回的是String还是基本类型,我觉得参数的返回值就这两种。还有其他吗?int转换String类型怎么转换 String转换int 同理吗? 麻烦代码说下 谢谢
追答参数返回不只这两种,还有很多,我在这里简单的说下有:返回一个对象,数组,Map ,List 等。
int 型转换成String :String.valueOf(int i)
String 型转换成 int :Integer.parseInt(String s)
热心网友
时间:2023-09-30 09:57
== 是判断两个对象是否为同一个对象,即在内存中是否在同一地址。
而 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来判断两个对象不同,而不能用来判断两个对象相同
热心网友
时间:2023-09-30 09:58
所有类都从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网上有许多产品团购,便宜有口碑
热心网友
时间:2023-09-30 09:59
所有类都从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