标签:style blog color ar 使用 java sp div log
js的String类型与java的String类型不同,比较的时候不用equals,可以直接用"==".
测试了下,这个"=="好像比较坑爹
<script type="text/javascript"> var a=new String("hehe"); var b=new String("hehe"); var c="hehe"; alert("a==c: "+(a==c));//true alert("b==c: "+(b==c));//true alert("a==b: "+(a==b));//false alert("hehe"=="hehe");//true </script>
怎么能有这么没道理的事情?a=c,b=c,但是a竟然不等于b!!!
我的结论是js中的String类型虽然没有equals方法,但是当String类型对象与另一个String类型的变量相比较的时候,使用的方法与java的equals方法相类似。而当两个String类型相比较的时候,"=="才与java中的"=="相类似,即比较两个对象是否是同一个对象。
与之相对应的java代码,则没有这种让人纠结的地方
String a=new String("hehe"); String b=new String("hehe"); String c="hehe"; String d="hehe"; System.out.println("a==b: "+(a==b));//false System.out.println("a==c: "+(a==c));//false System.out.println("c==b: "+(c==b));//false System.out.println("c==d: "+(c==d));//true System.out.println("a.equals(b): "+(a.equals(b)));//true
java中通过new创建的String对象用"=="相比较的时候,比较的是对象的地址值,而js中,只有当两个对象都是用new创建的时候,才比较地址值。
标签:style blog color ar 使用 java sp div log
原文地址:http://www.cnblogs.com/twobrothers/p/4085095.html