一个简单的字符串比较问题。

Stringa="JAVA";Stringb="JAVA";Stringc=newString("JAVA");Stringd="JA";Stringe="VA";Str... String a = "JAVA";
String b = "JAVA";
String c = new String("JAVA");
String d = "JA";
String e = "VA";
String f = "JA"+"VA";
String g = d+e;
String h = c; System.out.println("1>>:"+(a==b));/** T */
System.out.println("2>>:"+(a==c));/** F */
System.out.println("3>>:"+(a==f));/** T */
System.out.println("4>>:"+(a==g));/** F */
System.out.println("5>>:"+(c==f));/** F */
System.out.println("6>>:"+(c==g));/** F */
System.out.println("7>>:"+(c==h));/** T */后面是返回结果。。
"=="运算符不是不能直接比较两个对象吗?为什么 A==b却返回True 他俩又不是两个相同的对象
展开
 我来答
匿名用户
2013-11-13
展开全部
程序在运行的时候会创建一个字符串缓冲池 当使用 String b = "JAVA";这样的表达是创建字符串的时候,程序首先会 在这个String缓冲池中寻找相同值的对象,a首先被放到池中,所以在b被创建的时候,程序找到了具有相同值的a将 b 引用a 所引用的对象"Monday" 所以==

使用了 new 操作符,他明白的告诉程序:要创建一个新的字符串不要缓冲池中的,所以不能== 但是String类重写了equals方法所以他们是equals的。 所以,String a = "JAVA";这种形式完全可以看做是原始类型的数据来判断==。(不过它确实是引用类型) 给楼主的建议:1、首先创建一个字符串最好不要使用new而是String a = "JAVA";这样的方式,节省资源!2、比较字符串是否相等要使用equals而不是==,避免出错!
匿名用户
2013-11-13
展开全部
这个是判断地址的,相等返回true否则返回flose。也就是说你你的a地址里面值和b里面都是“JAVA”,其实你还可以写成,String a=b="JAVA"懂吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-11-13
展开全部
这是比较的地址
a,b都是指向的同一个字符串 JAVA
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-11-13
展开全部
不懂~不是我学校的专业``
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式