java下列代码的执行结果是
来源:百度知道 编辑:UC知道 时间:2024/07/08 14:34:29
下列代码的执行结果是:
public class Test5{
public class Test5{
public static void main(String args[]){
String s1=new String("hello");
String s2=new String("hello");
System.out.print(s1==s2);
System.out.print(",");
System.out.println(s1.equals(s2));
} }
public class Test5{
public class Test5{
public static void main(String args[]){
String s1=new String("hello");
String s2=new String("hello");
System.out.print(s1==s2);
System.out.print(",");
System.out.println(s1.equals(s2));
} }
false,true
是不是应该直接报个错啊~
既然是java 语言,两个字符串之间能用双等号“==”??
再说了,看看最上面两行~
public class Test5{
public class Test5{
这样用是代表需要使用构造函数么?就算使用构造函数,起码大括号需要配上对吧?
路过~拙见~
原代码有问题.改成如下代码后:
public class Test5{
public static void main(String args[]){
String s1=new String("hello");
String s2=new String("hello");
System.out.print(s1==s2);
System.out.print(",");
System.out.println(s1.equals(s2));
}
}
结果为:
false,true
false,true
解释
==是比较两个对象的内存地址
因为是new了两个对象所以内存地址是不一样的
equals是比较两个对象的内容
都是hello所以是一样的
false,true
第一个为false是因为”==“比较的是两个应用,他们在内存中的地址不一样,所以为false
第二个为true 是因为String类里重写了equals方法,只要两个对象的内容一样,就返回true
嗯,原代码有问题,答案是false ,true,==比较的是两个String对象的hashcode,它们是不相等的,equals比较的是String字符串的内容,在你的程序中它们是相等的,呵呵