黑马程序员技术交流社区

标题: null 和 空字符串的区别 [打印本页]

作者: 赵玮_Tom    时间: 2012-5-23 10:40
标题: null 和 空字符串的区别
String str = null; 和String str = "";有啥区别?
如果String str = null;只是在栈内存中创建了一个字符串的引用变量,那么String str = "";在堆内存中有内容吗?
总之就是null 和 "" 有什么区别?
作者: 陈嘉宾    时间: 2012-5-23 10:48
string str=null,表示一个空引用,不分配存储空间
String str =应该是已经开辟空字符串空间
作者: 黑马张健    时间: 2012-5-23 10:50
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;
作者: 张成龙    时间: 2012-5-23 10:53
String str = null;只是在栈内存中创建了一个字符串的引用,引用的指向为空;
String str = "";栈内存中创建了一个字符串的引用,引用指向的空间中的内容为空。
作者: 黄克帅    时间: 2012-5-23 10:59
String = null,表示空的引用  ,不占内存了空间
String = "",  表示空字符串 ,被实例化了,占内存空间

作者: 包晗    时间: 2012-5-23 11:07
空格不是空值!空 是个字符 在ASCII码中 空格是00100000B(B代表二进制数)表示的!NUL(null)空字符 是00000000表示的
空格有地址分配的
不知道还有哪不明白
作者: 杨康    时间: 2012-5-23 11:37
null表示引用类型为空,而空格是一个字符串类的数据,有对应的内存空间。
作者: 麦田守望者0812    时间: 2012-5-23 11:41
String = "",  已经实例化一个实例,但是内容为空字符串
String = null为空引用





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2