关于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? 展开
String c = b.substring(b.length()-1, b.length());
boolean a = c==")";
System.out.println(a);
System.out.println(c);
为什么a的值运行之后是false? 展开
5个回答
展开全部
一、“==”比较的是内存地址是否相等:
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是有点特殊的类型,多看几个练习就了解规则了(规则都是人定的,没有太多理由)。
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是有点特殊的类型,多看几个练习就了解规则了(规则都是人定的,没有太多理由)。
展开全部
==在java中对八大基本数据类型比较的是基值的大小 ,对引用数据类型比较的是基引用地址。String是引用数据类型,b.substring(b.length()-1,b.length());新产生了一个引用,与“)”是不同的引用地址,所以c的引用地址于“)”的引用地址不等
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
java的基础没学好 字符串不能用==来判断是否相等 要用string的equal方法来判断的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
数值用==比较,字符串用equals()方法
来自:求助得到的回答
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1楼解释的对,你可以看看==跟equals的区别
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询