A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© woshihq 中级黑马   /  2014-5-24 01:07  /  9814 人查看  /  57 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 woshihq 于 2014-5-25 15:50 编辑

初学Java,想问下为什么我这段代码运行不出正确的结果呢??
String  a=hello ;
String  b=hello;
if(a==b)
System.out.printf("a和b字符串相同");
“==”不是应该指两者相等时使用的吗???求解!!!

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

57 个回复

正序浏览
字符串要加双引号,引用类型==比较地址值是否相同,基本类型比较的是值是否想同。b.equals(a);才是判断两个字符串是否相等(区分大小写)
回复 使用道具 举报
定义字符串a和b时,所赋的值应该加上双引号,另外==比较String类型的数据时,比较的是堆内存中 的地址值是否相等。==只有在比较基本数据类型时,比较的才是其值是否相等。
回复 使用道具 举报
是的,==是用来判断左右两边是否相等。而=(一个等于号)则是赋值符号,将右边的值赋给左边。
回复 使用道具 举报
你没加双引号啊,String的==是比较字符串存放的地址。应该用a.equals(b),
这才是比较字符串的内容。看到后面就知道了
回复 使用道具 举报
a和b引用同一块内存时才相同
回复 使用道具 举报
简单来讲."=="是运算符,不能用于此处
回复 使用道具 举报
判断是否相等
回复 使用道具 举报
卓依 初级黑马 2015-10-11 12:52:05
49#
还有一点是因为String是重写了Equals方法,从而实现的是比较字符串的值是否相等.
回复 使用道具 举报
学习了  
回复 使用道具 举报
受益良多
回复 使用道具 举报
布尔类型的表达结果吧
回复 使用道具 举报
String是引用类型,==比较的是哈希值(相当于内存地址),两个的字符串开辟了不同的内存空间,用String类的
equals()方法比较的是字符串值
回复 使用道具 举报
"=="是比较运算符,结果是boolean类型,两边如果是基本数据类型,比较的是"=="两边的值;如果两边是引用数据类型,比较的则是引用变量指向的那个地址值而不是所引用数据的值。
回复 使用道具 举报
字符串虽然相等但是他是两个不同的对象,String a = "hello" 相当于String  a = new String("hello"),或者String a = new String (); a ="hello"
回复 使用道具 举报
看看大家的交流,受益匪浅啊
回复 使用道具 举报
String a = "hello";  要这么定义    String是字符串类型   需要加双引号标识
回复 使用道具 举报
了解了。
回复 使用道具 举报
想飞的鱼 发表于 2014-5-24 08:26
首先说说==的用法,它属于比较运算符,结果是boolean类型的,如果是基本数据类型的话,比较的是==两边的值 ...

很厉害啊................
回复 使用道具 举报
加油加油加油。。。。。。。。。。。。。。。
回复 使用道具 举报
本帖最后由 麻仁博 于 2015-3-22 13:38 编辑

我的理解: 应该是说  a 和 b 这俩个 变量  用== 相比较的话  是在比较他们的地址,因为 给a b 赋值,意思就是开辟出一个内存存放这个值,然后这个值存放的地方有一个地址,再将这个地址 给 a 和b 。所以你不能直接将a 和b 相比。 我复制了下 你的代码运行 貌似也是不可以。。好像是你那个 if(a==b)那里 有错 中英语状态下 输入字符有误? 我自己重新打了一遍就可以了。。
回复 使用道具 举报
123下一页
您需要登录后才可以回帖 登录 | 加入黑马