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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© AnrryHo 中级黑马   /  2016-4-27 00:59  /  789 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

空字符串和null的区别是什么

6 个回复

倒序浏览
空字符串是有内存空间,null是无内存空间。
回复 使用道具 举报
按照指针的思路来讲比较容易一些,
平常我们 String msg;就相当于创建了一个指针,或者说给我们一个可以去提取数据的标识。
但是现在这个标识没有办法使用,因为它不指向任何位置。
此时我们就可以说 msg = null;
但是一旦开始给msg赋值  哪怕是不写内容例如msg = “”;
这个时候msg就开始指向内存中的一块地址,该地址的内容就是“”;
也就是说  系统先去分配内存空间,然后让msg去指向刚刚分配的内存地址,最后给地址赋值""(即便是空字符串,但是也在内存中占据位置)


所以总的来说  空字符串和 null最大的区别就在于是否在内存中占据空间。

在应用过程中 假如我们要打印出来msg的是空字符串  那可以打印出来 而且不会报错  只不过数据是什么都没有
但是如果我们打印的msg是null 那在执行打印语句的时候就会报错,就是通常我们遇到的NullPointException
回复 使用道具 举报 1 0
前者在内存中占据空间,而null在内存中却不占内存
回复 使用道具 举报
空字符串有内存空间,null无内存空间。 空字符串可以调用方法,而null不能指向对象不能调用方法
回复 使用道具 举报
打个比方,一串羊肉串,一个肉没了还剩下一根棍子,一个棍子也没有了,不懂私聊我
回复 使用道具 举报
加油加油加油加油
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马