黑马程序员技术交流社区

标题: java中判断String为空的问题 [打印本页]

作者: zhaishuang    时间: 2012-4-19 01:40
标题: java中判断String为空的问题
如何判断字符串为空;str==null;还是str.equals("");还是str.length==0;还是它们组合操作呢?没想明白
作者: 龚振 龚振 龚振    时间: 2012-4-19 01:51
字符串为空,null还是""是不同滴。
null表示这个字符串不指向任何的东西,如果这时候你调用他的方法,那么就会出现空指针异常
而""表示他指向一个长度为0的字符串,这时候调用他的方法是安全的。

所以,判断一个字符串是否为空,首先就要确保他不是null,然后再判断他的长度。
String str = xxx;
if(str != null && str.length() != 0) { }
作者: 张超超    时间: 2012-4-19 09:45
首先你要明白,字符串为空的说法,null还是"",这两个是完全不同的意义,
null表示这个字符串不指向任何的东西,如果这时候你调用他的方法,那么就会出现空指针异常
而""表示他指向一个长度为0的字符串,这时候调用他的方法是安全的。


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

String str = xxx;
if(str != null && str.length() != 0) { }
这种做法才是安全的,首先他会判断str是否为空,如果为空那么if就直接退出了,就不会再判断后面的str.length() != 0了,这是JAVA的&&特性,也许其他语言也是这样。
作者: 邱俊杰    时间: 2012-4-19 10:41
本帖最后由 邱俊杰 于 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. }
复制代码

作者: 罗旭维    时间: 2012-4-19 10:46
猜测是否有一个方法:String.字符串为空()。
作者: 罗旭维    时间: 2012-4-19 11:17
罗旭维 发表于 2012-4-19 10:46
猜测是否有一个方法:String.字符串为空()。

打酱油的,路过啊。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2