1. String a;  申明一个string类型的 a,即没有在申请内存地址,更没有在内存任何指向引用地址;
  2. String a = null ;   申明一个string类型的 a,同时在内存里申请了一个地址,但是该地址不指向任何引用地址;
  3. String a = "" ;申明一个string类型的 a,既在内存里申请了地址,该地址又指向一个引用该字符串的引用地址;

一般来说 字符串的使用 最好用String a = "" ;语句,可以防止后面的程序因引用地址混乱而找不到的异常!

String a = null ;   String a;  劲量少用!  能不用就不要使用!

注意:"" 也是字符串

String s = String.Empty 与 String s=""; 是完全相同的

换个说法:

  1. String a ;该语句表示只是声明了一个引用变量,但是并没有初始化引用,所以对变量s的任何操作(除了初始化赋值外) 都将引发异常. 
  2. String a =null; 表示未申请任何内存资源,即些语句表示声明了一个引用变量并初始化引用,但是该引用没有指向任何对象.但可以把它作为参数传递或其它使用,但是不能调用它作为对象的方法
  3. String a =""; 表示申请了内存资源,但资源空间值为空。该语句表示声明并引用到一个对象,只不过这个对象为0个字节.所以既然有了对象,就可以调用对象的方法