天天看点

空字符串(“”)和null和空格字符串(" ")的区别

1、类型

null表示的是一个对象的值,而并不是一个字符串。

例如声明一个对象的引用,String a = null ;

""表示的是一个空字符串,也就是说它的长度为0,但它是一个字符串。

例如声明一个字符串String str = “” ;

2、内存分配

String str = null ; 表示声明一个字符串对象的引用,但指向为null,也就是说还没有指向任何的内存空间;

String str = “”; 表示声明一个字符串类型的引用,其值为""空字符串,这个str引用指向的是空字符串的内存空间;

“” :分配了内存 ,分配了一个空间

null :未分配内存

" " :分配了内存,分配了一个空间

string str1 = "";    //空字符串      str1.length() 等于 0
 string str2 = null; //NULL
 string str3 = " ";   //空格串          str2.length() 等于 1
           

在java中变量和引用变量是存在栈中(stack),而对象(new产生的)都是存放在堆中(heap):