String str; str==""和str.equal("")一样吗?还是有什么差别? java里string是一个对象,使用==比较时是比较两个string对象的地址,而equals是比较两个string字符串的值,所以用equals和==进行比较会得到不同的结果,具体的可以参看java的一些书 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1句话,你如果想比较两个字符串是否相同,就用equals(),用==就会出错。 ==是判断对象的地址是否相同equals是比较对象的真实值“”肯定没有真实的值,或者说就不是对象 用== String str; str == null表示str这个reference不"指向"任何对象str.equal("")表示的是str"所指的"对象的值为字符串"",这个字符串里没有任何字符罢了 如果真的象各位所说的那样,那么下面的代码执行时候为什么会出现两个对话框String aaa = " "; if (aaa == " ") { javax.swing.JOptionPane.showMessageDialog(null, "1"); } if (aaa.equals(" ")) { javax.swing.JOptionPane.showMessageDialog(null, "2"); } http://java.sun.com/developer/JDCTechTips/2004/tt0504.html#2 String aaa = " " ; 时,会在内存中生成一个String 对象,并赋值为“ ”,然后,用aaa指向它。当第二次出现了常量“ ”时,发现,在内存中已有了这种常量,于是,不重新生成,直接拿来使用。这样,导致 aaa==" "的结果为true;object1.equals(object2)并不总是比较两个对象的值,对于自己创建的对象,这种比较方式,也是比较两个引用所指的物理对象。如:class a{ int kk; public a(int m){ kk=m;}}class test001{ static public void main(String [] arg){ a one=new a(12); a two=new a(12); if(one.equals(two)) System.out.println("true"); else System.out.println("false"); }}结果为false. to icystone(石冰)String aaa = " ";这里aaa等于的是一个String常量,常量本来就只有一份,所以第一个if中比较他们的地址当然是相同的拉后面一个if不用解释了吧 最近见三、四次这样的问题了 建议楼主要看看基本的JAVA书本 回复人: kongkongye(飘在空中的汽水瓶) ( ) 信誉:100 关于>String aaa = " " ; 时,会在内存中生成一个String 对象,并赋值为“ ”,然后,用aaa指向它。当第二次出现了常量“ ”时,发现,在内存中已有了这种常量,于是,不重新生成,直接拿来使用。这样,导致 aaa==" "的结果为true;这个提法是完全错误的,之所以发生aaa==" "那样的情况,是因为“编译期”的优化,而不是“运行期”的检查。具体的,我楼上的那个超链接里面有官方详尽的解释(英文) 这样基础的问题到处都是,已经讨论N次了,楼主还是看看JAVA基础概念先! 判断字符串相等还是用str.equal("") ==是比较两个所指的是不是一个地方的对象equal对于String类来说是比较两个对象的内容是不是一样,对于其他类默认是调用== 学习到了~~~vb.cuizm(射天狼) 也在这。呵呵 java里string是一个对象,使用==比较时是比较两个string对象的地址,而equals是比较两个string字符串的值,所以用equals和==进行比较会得到不同的结果, 寻求java视频教程 怎么写这个方法 Exception 请教jdk自带的hashmap类的hash函数 java直接打印pdf如何实现?进来一起讨论! linux下运行报段错误 在线等天下第一难事! 偶的这个多任务定时执行这样设计合理码?谢谢! 如何在一个自定义窗口中显示(文本区域)显示在DOS下运行JAVAC\JAVA时所触发的异常? (另一个名没分可用了只好用这个贴了) 各位大虾现欲用java开发一套网上投票表决系统 应该看什么书?用什么开发工具?(一定给分!) 求各种操作系统下的发送邮件的命令(每个20分,不够另加) 关于传值的问题
equals是比较对象的真实值
“”肯定没有真实的值,或者说就不是对象 用==
str == null表示str这个reference不"指向"任何对象
str.equal("")表示的是str"所指的"对象的值为字符串"",这个字符串里没有任何字符罢了
String aaa = " ";
if (aaa == " ")
{
javax.swing.JOptionPane.showMessageDialog(null, "1");
} if (aaa.equals(" "))
{
javax.swing.JOptionPane.showMessageDialog(null, "2");
}
当第二次出现了常量“ ”时,发现,在内存中已有了这种常量,于是,不重新生成,直接拿来使用。
这样,导致 aaa==" "的结果为true;object1.equals(object2)并不总是比较两个对象的值,对于自己创建的对象,这种比较方式,也是比较两个引用所指的物理对象。
如:class a
{
int kk;
public a(int m)
{
kk=m;
}
}class test001
{
static public void main(String [] arg)
{
a one=new a(12);
a two=new a(12);
if(one.equals(two))
System.out.println("true");
else
System.out.println("false");
}
}
结果为false.
当第二次出现了常量“ ”时,发现,在内存中已有了这种常量,于是,不重新生成,直接拿来使用。
这样,导致 aaa==" "的结果为true;这个提法是完全错误的,之所以发生aaa==" "那样的情况,是因为“编译期”的优化,而不是“运行期”的检查。
具体的,我楼上的那个超链接里面有官方详尽的解释(英文)
equal对于String类来说是比较两个对象的内容是不是一样,对于其他类默认是调用==