Java 中关于String 对象的空对象(null), 空值(""),空格(" ")

转载 2016年08月31日 15:33:13

Java 中关于String 对象的空对象(null), 空值(""),空格(" ")对于很多人来说很模糊,下面将分别介绍一下他们的用法:定义,判断,运算。

首先,先上代码:

[java] view plain copy
  1. private void testStringNullOrEmpty() {  
  2.   
  3.         // 如果s=null代表空对象,即还没创建出对象,就是还没开辟空间,。  
  4.         // 如果s = ""表示创建出了对象,但是这个对象内容为空,也就是空字符串。  
  5.         // 如果s = " "表示创建出了对象,但是这个对象内容为不为空,而是空格。  
  6.   
  7.         String s = null;  
  8.         String k = "";  
  9.         String n = " ";  
  10.         String t = "ab";  
  11.   
  12.         Log.d(TAG, "s = " + s);                    //output : s = null  
  13.         Log.d(TAG, "k = " + k);                    //output : k =   
  14.         Log.d(TAG, "t = " + t);                    //output : t = ab  
  15.         Log.d(TAG, "n = " + n);                    //output : n =   
  16.         Log.d(TAG, "t.length() = " + t.length());  //output : t.length() = 2  
  17.         Log.d(TAG, "k.length() = " + k.length());  //output : k.length() = 0  
  18.         Log.d(TAG, "n.length() = " + n.length());  //output : n.length() = 1  
  19.   
  20.         //equals方法比较的是两个对象的内容是否相同,因此,对象必须有指向的空间,即不能为null,否则,会抛出异常。  
  21.         Log.d(TAG, "k.equals(null) = " + k.equals(null));  //output : k.equals(null) = false  
  22.         Log.d(TAG, "k.equals(\"\") = " + k.equals(""));     //output : k.equals("") = true  
  23.         Log.d(TAG, "k.equals(\" \") = " + k.equals(" "));   //output : k.equals(" ") = false  
  24.         Log.d(TAG, "n.equals(\"\") = " + n.equals(""));     //output : n.equals("") = false  
  25.         Log.d(TAG, "n.equals(\" \") = " + n.equals(" "));   //output : n.equals(" ") = true  
  26.         // Log.d(TAG, "s.equals(null) = " + s.equals(null)); //异常  
  27.         Log.d(TAG, "k.isEmpty() = " + k.isEmpty());         //output : k.isEmpty() = true  
  28.         Log.d(TAG, "n.isEmpty() = " + n.isEmpty());         //output : n.isEmpty() = false  
  29.         // Log.d(TAG, "s.isEmpty() = " + s.isEmpty());      //异常  
  30.   
  31.         Log.d(TAG, "s == null = " + (s == null));          //output : s == null = true  
  32.   
  33.         // 在使用"+"操作符时,如果有一个操作数是字符串,其他操作数会被转换成字符串  
  34.         s = s + t;  
  35.         Log.d(TAG, "after (s + t) s = " + s);                //output : after (s + t) s = nullab  
  36.         Log.d(TAG, "s.length() = " + s.length());            //output : s.length() = 6  
  37.         Log.d(TAG, "s == null = " + (s == null));           //output : s == null = false  
  38.   
  39.     }  

定义


空对象:

String s = null; 

空对象是指定义一个对象s,但是没有给该对象分配空间,即没有实例化该对象,因此,空对象在调用所有对象方法时候都会抛出异常,如s.length(), s.isEmpty()等方法。

空值:

String k = "";

空值是指一个字符床对象已经实例化,即系统已经给该变量分配了空间,只是对象的内容为空。

空格:

String n = " ";

是指一个字符对象已经实例化,对象的内容为空格。


判断

对于上述三种情况,如何判断一个字符变量属于上述类型,下面主要介绍下方法:

空对象判断:

判断一个字符变量是否是null ,使用 逻辑判断 等于(==)与null对象比较,代码表达式如下:

s == null; 

注意: 空对象不能使用诸如equals(), isEmpty()等对象方法,因为它未被实例化。

空值判断:


判断空值可有三种方式:
    (1)equals方法比较的是两个对象的内容是否相同,可用表达语句:k.equals("") ;

      (2)  length()方法是查看某个字符串对象的字符个数,可用表达式判断:k.length() == 0 ;

      (3)  isEmpty()方法是判断某个字符串对象字符个数时候为0,可用表达式判断:k.isEmpty() ;


空格判断:

空格内容为一个空格,虽然在输出显示时候和空值一样,都是空的,但是在系统里面的内存机制不一样的,空格字符串表示该对象的内存空间里面有内容,是空格,字符个数是1,因此,在使用如下方法时候结果如下:

n.length() 的输出值为1, n.isEmpty()输出为false。

判断语句: n.equals(" ") ;

 

运算

字符串提供了"+"操作符,表示两个字符串对象可以链接一起,在使用该运算时候,有这样一条规则:如果有一个操作数是字符串,其他操作数会被转换成字符串。


在上面代码s = s + t; s申明时候为空对象,通过"+"时,会将null转化为一个字符串对象。因此结果是nullab。


大家可以对照上面代码例子,更加详细的了解这三者实现机制。

相关文章推荐

内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java 中关于String 对象的空对象(null), 空值(""),空格(" ")
举报原因:
原因补充:

(最多只允许输入30个字)