黑马程序员技术交流社区

标题: 关于null和"" [打印本页]

作者: 曾玉锋    时间: 2012-7-18 09:24
标题: 关于null和""
string str=null;与string str="";在内存上的差异,求解.
主要是堆栈、分配空间、指针这些东西。

作者: 赵学辉    时间: 2012-7-18 09:41
null是表示空的,既没有值也没用分配空间,而""则表示空值,有分配空间,在这个分配空间上存的数值是一个空值!
希望对你有帮助!
作者: 许庭洲    时间: 2012-7-18 09:44
1,null没有分配空间;
2,""分配了空间;
3,string str=null;str还不是一个实例化的对象;
4,string str="";     str已经实例化。
作者: 曾玉锋    时间: 2012-7-18 10:15
许庭洲 发表于 2012-7-18 09:44
1,null没有分配空间;
2,""分配了空间;
3,string str=null;str还不是一个实例化的对象;

谢谢!
那请问一下
String str;(只声明未赋值)和String str=null;它们有区别么?
作者: 许庭洲    时间: 2012-7-18 10:21
曾玉锋 发表于 2012-7-18 10:15
谢谢!
那请问一下
String str;(只声明未赋值)和String str=null;它们有区别么? ...

String str;//程序通不过
String str=null;//str赋了值,但能通过编译
作者: 曾玉锋    时间: 2012-7-18 10:32
许庭洲 发表于 2012-7-18 10:21
String str;//程序通不过
String str=null;//str赋了值,但能通过编译

嗯,明白了,谢谢。
作者: 赵鹏程    时间: 2012-7-18 13:11
NULL是空,没有分配空间也没有值," "的表示空值 分配了空间的
string str=NULL  str并没有被实例化
string str=“ ” 被实例化了
作者: 张寅平    时间: 2012-7-18 15:03
NULL代表声明了一个空对象,根本就不是一个字符串。   
""代表声明了一个对象实例,这个对象实例的值是一个长度为0的空字符串。

NULL代表声明了一个空对象,对空对象做任何操作都不行的,除了=和==   
""是一个字符串了,只是这个字符串里面没有内容

String s=null;只是定义了一个句柄,也就是说你有了个引用,但是这个引用未指向任何内存空间   
String s="";这个引用已经指向了一块是空字符串的内存空间,是一个实际的东东了,所以你可以对它操作

作者: 杨正    时间: 2012-7-18 17:36
string str=null 在内存上没有分配空间;
而string str="" 则由系统自动分配一个空间,在栈区(stack)上。并且是一个空值。(这里的空值不是没有值,而是一种值的形式)
作者: 陌花╮有意、    时间: 2012-7-18 18:32
string str=null,没有值,并不分配内存空间
string str="",分配一个是空值的内存空间




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