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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zhaishuang 中级黑马   /  2012-4-19 01:40  /  3142 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

如何判断字符串为空;str==null;还是str.equals("");还是str.length==0;还是它们组合操作呢?没想明白

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

6 个回复

倒序浏览
字符串为空,null还是""是不同滴。
null表示这个字符串不指向任何的东西,如果这时候你调用他的方法,那么就会出现空指针异常
而""表示他指向一个长度为0的字符串,这时候调用他的方法是安全的。

所以,判断一个字符串是否为空,首先就要确保他不是null,然后再判断他的长度。
String str = xxx;
if(str != null && str.length() != 0) { }

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
首先你要明白,字符串为空的说法,null还是"",这两个是完全不同的意义,
null表示这个字符串不指向任何的东西,如果这时候你调用他的方法,那么就会出现空指针异常
而""表示他指向一个长度为0的字符串,这时候调用他的方法是安全的。


那么根据以上的说法,判断一个字符串是否为空,首先就要确保他不是null,然后再判断他的长度。

String str = xxx;
if(str != null && str.length() != 0) { }
这种做法才是安全的,首先他会判断str是否为空,如果为空那么if就直接退出了,就不会再判断后面的str.length() != 0了,这是JAVA的&&特性,也许其他语言也是这样。
回复 使用道具 举报
本帖最后由 邱俊杰 于 2012-4-19 10:44 编辑
klas2008 发表于 2012-4-19 01:51
字符串为空,null还是""是不同滴。
null表示这个字符串不指向任何的东西,如果这时候你调用他的方法,那么 ...

看到楼主的回答我写了这样的代码、
  1. public class Text_3
  2. {

  3.         public static void main(String[] args)
  4.         {
  5.                 // TODO Auto-generated method stub
  6.                 //String s=" ";      //一次执行的结果是什么?哪个是空字符串呢?
  7.                 //String s=null;
  8.                 String s="";
  9.                 if(s==null)                  //这个是判断字符串为空
  10.                 {
  11.                         System.out.println("s为空");  
  12.                 }
  13.                 else if(s!=null&&s.length()!=0)    //这个是判断字符串不为空
  14.                 {
  15.                         System.out.println("s不为空");
  16.                 }
  17.                 else if(s!=null&&s.length()==0)  //这个又什么意义?
  18.                 {
  19.                         System.out.println("不是空,长度是0");
  20.                 }
  21.         }

  22. }
复制代码
回复 使用道具 举报
猜测是否有一个方法:String.字符串为空()。

点评

你试试点点、没看到过这种方法噢 、  发表于 2012-4-19 10:47
回复 使用道具 举报
罗旭维 发表于 2012-4-19 10:46
猜测是否有一个方法:String.字符串为空()。

打酱油的,路过啊。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马