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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 梁健 黑马帝   /  2011-11-24 12:49  /  1985 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 l梁键 于 2011-11-24 16:12 编辑

在JAVA中,如果判断一个String实例是否为空,一般用如下来判断:
String a;
if((a==null) || (a.trim().equals("")))

为什么用equals方法?
好像不会用a.trim() == "" 这个条件来代替第二个条件.
请问这是为什么?

10 个回复

倒序浏览
清秋 黑马帝 2011-11-24 13:03:14
沙发
==比较的是对象的地址
回复 使用道具 举报
以上程序,==比较的是空的对象地址,equals比较的空的对象。
回复 使用道具 举报
强子 黑马帝 2011-11-24 14:15:16
板凳
搜一搜   吧里有很多将equals和==的帖子,去看看吧
回复 使用道具 举报
equals是比较内容的,对于字符串变量来说,使用“= =”和“equals()”方法比较字符串时,其比较方法不同。
“= =”比较两个变量本身的值,即两个对象在内存中的首地址。
回复 使用道具 举报
本帖最后由 梦女孩 于 2011-11-24 14:26 编辑

==比较的是对象的地址
在==比较里面
new String("")==""是false
回复 使用道具 举报
冯敏 黑马帝 2011-11-24 15:09:22
7#
a.trim()方法是去掉头部和尾部的空格,比如说:
String str="  aaa    ";
String str2 = "bbb";
那么它用str1.trim().equals("")方法和用str2.equals("")方法结果是一样的,那不就多此一举了吗,我感觉没必要
回复 使用道具 举报
程佳佳 黑马帝 2011-11-24 15:43:32
8#
==比较的是两个对象的地址,equals比较的是两个对象的内容
回复 使用道具 举报
程佳佳 黑马帝 2011-11-24 15:47:52
9#
两者只要有一个为空,则这个String实例为空
回复 使用道具 举报
梁健 黑马帝 2011-11-24 16:10:27
10#
哦,原来如此!
回复 使用道具 举报
李龙龙 黑马帝 2011-11-24 16:35:20
11#
String a=new String();
System.out.println(a.trim().equals(""));//true ,对象a 建立,没有赋值默认为空
String str=null ;
System.out.println(str==null);//true,str没有被实例化,在内存中不存在
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马