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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 赵玮_Tom 中级黑马   /  2012-5-23 10:40  /  2161 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

String str = null; 和String str = "";有啥区别?
如果String str = null;只是在栈内存中创建了一个字符串的引用变量,那么String str = "";在堆内存中有内容吗?
总之就是null 和 "" 有什么区别?

7 个回复

倒序浏览
string str=null,表示一个空引用,不分配存储空间
String str =应该是已经开辟空字符串空间
回复 使用道具 举报
String str = null; 在内存中没有开辟空间。
String str = ""; 在内存中开辟了空间。是有内存地址的。
另外有的时候,当str 要接受一个字符串的变量时,如果接受的那个变量为null. 当程序调用str的字符串方法时,程序就会报java.lang.NullPointerException空指针异常。
比如:System.out.println(str.length());    //返回0
          System.out.println(str1.length());  //返回空指针异常
所以在做JavaWeb程序的时候,最需要避免的就是页面报空指针异常。
所以当有的时候,用String str = "";比较优化程序。
如果你想用,String str = null;那么就别忘记判断它的值是否是null;

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

回复 使用道具 举报
String str = null;只是在栈内存中创建了一个字符串的引用,引用的指向为空;
String str = "";栈内存中创建了一个字符串的引用,引用指向的空间中的内容为空。
回复 使用道具 举报
String = null,表示空的引用  ,不占内存了空间
String = "",  表示空字符串 ,被实例化了,占内存空间
回复 使用道具 举报
空格不是空值!空 是个字符 在ASCII码中 空格是00100000B(B代表二进制数)表示的!NUL(null)空字符 是00000000表示的
空格有地址分配的
不知道还有哪不明白
回复 使用道具 举报
杨康 中级黑马 2012-5-23 11:37:01
7#
null表示引用类型为空,而空格是一个字符串类的数据,有对应的内存空间。
回复 使用道具 举报
String = "",  已经实例化一个实例,但是内容为空字符串
String = null为空引用
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马