关于j**a中的substring。

时间:浏览195次 发布人:mewilber

关于j**a中的substring。

已解决问题

谷歌mewilber用户在浏览195次提交了关于“北京师范大学关于j**a中的substring。”的提问,欢迎大家涌跃发表自己的观点。目前共有1个回答,最后更新于2024-08-03T09:20:23。Stringb="8)";
Stringc=b.substring(b.length()-1,b.length());
booleana=c==")";
System.out.println(a);
System.out.println(c);
a值运行false?希望大家能够帮助她。

详细问题描述及疑问:Stringb="8)";
Stringc=b.substring(b.length()-1,b.length());
booleana=c==")";
System.out.println(a);
System.out.println(c);
a值运行false?期待您的答案,没有什么华丽的语言,但是我对你的感谢不会减少 !

希望以下的回答,能够帮助你。

第1个回答

用户名:0.1**  

一、“==”比较的是内存地址是否相等:
1)Stringb="8)",这个"8)"是最简单的来自字符串常量(直接写出来的,没有通过计算或其它逻辑处理得到),它存放于内存中的静态区,")"同样也是最简单的字符串常量;
2)Stringc=b.sub问答string(b.length验众声义士抗续袁了固紧()-1,c的结果虽然也是")",但它是对字符串常量b调用subs事tring方法得到的,一调用这个方法,新的对象就**生了,新对象位于堆内存中。
3)c和直接拼写出来的")"是不同的2个对象,2个对象的内存地址必须不一样,所以c==")"是false。

二、“equals”是实际用的最多的(而“==”只是出现在练习题中),它只要2个字符串对象长的今黄分孩艺洲棉怎所一样就为true,c.equals(")")一定是并二true。实际开发当中,阻突伤范食手吸错帮我们需要比较的字符串,确实只是想知道它们长得一不一何样,至于是不是同一个内存--从来不会遇到这种问题。

总之,String是有点特殊的类型,多看几个练习就了解规则了(规则都是人定的,没有太多理由)。