打扰下,java基础问题。
StringA=newString("a");StringB=newString("a");if(A.equals(B)){System.out.println("equ...
String A =new String("a");
String B = new String("a");
if(A.equals(B)){
System.out.println("equals");
}else{
System.out.println(" no equals"); //输出 equals
}
// Long A = new Long(7L);
// Long B= new Long(7L);
// if(A==B){
// System.out.println("equals");
// }else{
// System.out.println(" no equals"); // 输出 no equals
// }
两次输出不一样,这个怎么解释啊?谢谢了。 展开
String B = new String("a");
if(A.equals(B)){
System.out.println("equals");
}else{
System.out.println(" no equals"); //输出 equals
}
// Long A = new Long(7L);
// Long B= new Long(7L);
// if(A==B){
// System.out.println("equals");
// }else{
// System.out.println(" no equals"); // 输出 no equals
// }
两次输出不一样,这个怎么解释啊?谢谢了。 展开
6个回答
展开全部
中文java书翻译的都太烂了
A与B是reference,当然不同
A.equal()方式是比较reference A指向的对象和B指向的对象是否一样
equal方法可以自己重写的
A与B是reference,当然不同
A.equal()方式是比较reference A指向的对象和B指向的对象是否一样
equal方法可以自己重写的
展开全部
这个是关系到内存分配的问题。。。。。。
JAVA中的基本数据都是类,你每次实例化一个对象(NEW)的时候就会获得一块内存空间,而这些类中的有专门比较的方法equals(是比较其中的数值)
而我们一般使用的==号其实是比较他们的内存空间而不是里面的数值,你每次实例化一个对象(NEW)的时候就会获得一块内存空间这些内存的地址肯定是不同的所以就会出现你所说的那样的结果
懂不????
JAVA中的基本数据都是类,你每次实例化一个对象(NEW)的时候就会获得一块内存空间,而这些类中的有专门比较的方法equals(是比较其中的数值)
而我们一般使用的==号其实是比较他们的内存空间而不是里面的数值,你每次实例化一个对象(NEW)的时候就会获得一块内存空间这些内存的地址肯定是不同的所以就会出现你所说的那样的结果
懂不????
展开全部
A.equals(B)比较的是字符编码,A==B比较的是在空间里的地址,空间不一样,地址也就不一样
展开全部
第一次是比较内容,第二次是比较内存地址。
展开全部
应该一样吧 我试试啊
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询