关于java中的substring。

Stringb="8)";Stringc=b.substring(b.length()-1,b.length());booleana=c==")";System.out.... String b = "8)";
String c = b.substring(b.length()-1, b.length());
boolean a = c==")";
System.out.println(a);
System.out.println(c);
为什么a的值运行之后是false?
展开
 我来答
家居生活与平凡的世界团长
高粉答主

推荐于2016-08-11 · 每个回答都超有意思的
知道大有可为答主
回答量:2073
采纳率:98%
帮助的人:554万
展开全部
一、“==”比较的是内存地址是否相等:
1) String b = "8)",这个"8)"是最简单的字符串常量(直接写出来的,没有通过计算或其它逻辑处理得到),它存放于内存中的静态区,")"同样也是最简单的字符串常量;
2) String c = b.substring(b.length()-1,c的结果虽然也是")",但它是对字符串常量b调用substring方法得到的,一调用这个方法,新的对象就产生了,新对象位于堆内存中。
3) c和直接拼写出来的")"是不同的2个对象,2个对象的内存地址必须不一样,所以c==")"是false。

二、“equals”是实际用的最多的(而“==”只是出现在练习题中),它只要2个字符串对象长的一样就为true,c.equals(")")一定是true。实际开发当中,我们需要比较的字符串,确实只是想知道它们长得一不一样,至于是不是同一个内存--从来不会遇到这种问题。

总之,String是有点特殊的类型,多看几个练习就了解规则了(规则都是人定的,没有太多理由)。
luzl1989
2012-12-05
知道答主
回答量:46
采纳率:0%
帮助的人:16.5万
展开全部
==在java中对八大基本数据类型比较的是基值的大小 ,对引用数据类型比较的是基引用地址。String是引用数据类型,b.substring(b.length()-1,b.length());新产生了一个引用,与“)”是不同的引用地址,所以c的引用地址于“)”的引用地址不等
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
逆流Chaos
2012-12-05 · 超过10用户采纳过TA的回答
知道答主
回答量:36
采纳率:0%
帮助的人:28.6万
展开全部
java的基础没学好 字符串不能用==来判断是否相等 要用string的equal方法来判断的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
解忧杂货铺之石猴
2012-12-07
知道答主
回答量:39
采纳率:0%
帮助的人:7.5万
展开全部
数值用==比较,字符串用equals()方法
来自:求助得到的回答
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
华醉A
2012-12-05 · TA获得超过229个赞
知道小有建树答主
回答量:209
采纳率:0%
帮助的人:142万
展开全部
1楼解释的对,你可以看看==跟equals的区别
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式