打扰下,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
// }

两次输出不一样,这个怎么解释啊?谢谢了。
展开
 我来答 举报
hebaobin
2011-12-27 · TA获得超过180个赞
知道小有建树答主
回答量:123
采纳率:0%
帮助的人:88.4万
展开全部
String A = new String("a")
String B = new String("a")
A.equals(B)比较的是 A B的值是否相等 都等于 "a" 所以输出equals
Long A = new Long (7L)
Long B = new Long (7L)
A==B比较的是 A和B引用的内存地址是否一致 两次都是new创建的,每次都在堆内存中分配新的内存空间,所以不一样。输出 no equals.
百度网友243dd2c
2011-12-27 · 超过10用户采纳过TA的回答
知道答主
回答量:28
采纳率:0%
帮助的人:26.8万
展开全部
中文java书翻译的都太烂了

A与B是reference,当然不同

A.equal()方式是比较reference A指向的对象和B指向的对象是否一样

equal方法可以自己重写的
1 已赞过 已踩过<
你对这个回答的评价是?
评论 举报 收起
tygg_ylpp
2011-12-27 · 超过19用户采纳过TA的回答
知道答主
回答量:167
采纳率:0%
帮助的人:69.1万
展开全部
这个是关系到内存分配的问题。。。。。。
JAVA中的基本数据都是类,你每次实例化一个对象(NEW)的时候就会获得一块内存空间,而这些类中的有专门比较的方法equals(是比较其中的数值)
而我们一般使用的==号其实是比较他们的内存空间而不是里面的数值,你每次实例化一个对象(NEW)的时候就会获得一块内存空间这些内存的地址肯定是不同的所以就会出现你所说的那样的结果
懂不????
1 已赞过 已踩过<
你对这个回答的评价是?
评论 举报 收起
后宫霸主
2011-12-27 · TA获得超过571个赞
知道答主
回答量:91
采纳率:0%
帮助的人:76.7万
展开全部
A.equals(B)比较的是字符编码,A==B比较的是在空间里的地址,空间不一样,地址也就不一样
1 已赞过 已踩过<
你对这个回答的评价是?
评论 举报 收起
悠悠4TD0K
2011-12-27 · 超过26用户采纳过TA的回答
知道答主
回答量:153
采纳率:0%
帮助的人:110万
展开全部
第一次是比较内容,第二次是比较内存地址。
1 已赞过 已踩过<
你对这个回答的评价是?
评论 举报 收起
ssetnegl
2011-12-27
知道答主
回答量:8
采纳率:0%
帮助的人:6.1万
展开全部
应该一样吧 我试试啊
抢首赞 已赞过 已踩过<
你对这个回答的评价是?
评论 举报 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式