高分求教JAVA字符串比较问题!

来源:百度知道 编辑:UC知道 时间:2024/05/26 14:23:16
public class test {
public static void main(String[] args){
String arr[]={"aaa bbb", "bbb ddd"};
Comparation(arr[0],arr[1]);
}
public static void Comparation(String oriStr,String cmpStr){
String arrOri[] = oriStr.split(" ");
String arrCmp[] = cmpStr.split(" ");
System.out.println(arrCmp[0]+"="+arrOri[1]); //这里输出bbb=bbb
System.out.println(arrCmp[0]==arrOri[1]); //这里输出false
}
}
我想问一下为什么System.out.println(arrCmp[0]==arrOri[1])这句会输出false?大家都是bbb啊,是不是String只是对象而比较不了?该怎么做才能得到true?拜托啦!
还有我在JavaScript网页脚本运行类似代码时显示的是true,更不解。

你的arrCmp[0]和arrOri[1]都是String类型,String不属于基本类型而是对象类型,对于对象类型"=="比较的是他们是不是同一个引用,也就是比较是不是同一个内存地址,很显然,你的那两个要比较的东西不是同一个引用,也就是说在内存中他们不是同一个内存地址,所以输出false,所以不能用==比较字符内容是不是一样,在这里,你只是比较他们的内容是不是一样,要用equals:
arrCmp[0].equals(arrOri[1]),这样就输出true.
理解了吧?
javascript和java是两回事,在javascript里比较内容是不是一样确实就是用"=="了。