黑马程序员技术交流社区

标题: 为什么定义一个string类型的变量可以为null而char就不行? [打印本页]

作者: 王起    时间: 2013-3-11 17:24
标题: 为什么定义一个string类型的变量可以为null而char就不行?
本帖最后由 王起 于 2013-3-15 13:06 编辑

为什么定义一个string类型的变量可以为null而char就不行?
作者: HM张扬    时间: 2013-3-11 17:29
char表示一个字符.如果不填 好像是0 吧...
string是可以没有的.我认为这是最没有显示的数据类型了
作者: 徐鸿燕    时间: 2013-3-11 17:49
整数型(byteshortintlong)的基本类型变量的默认值为0
单精度浮点型(float)的默认值为0.0f
双精度浮点型(double)的默认值为0.0d
字符型(char)的默认值为 ‘\u0000’
布尔型(boolean)的默认值为false
String的默认值为null

至于为什么能而为什么不能,这个问题无意义。就好像数学算法上为什么(1+1=2),这个结论是早就定义好的。
作者: 肖彬    时间: 2013-3-11 17:56
因为char是属于基本类型 数据是存在栈(stack)中 而string不属于基本类型 是存在堆(heap)中

作者: 王起    时间: 2013-3-11 17:56
谢谢楼上的2位
作者: 宋健    时间: 2013-3-11 19:01
这个要从char类型和string类型的数据来看。
char类型是值类型,存在在栈上,在编译时要求分配内存,所以必须为其赋初值,其他值类型如int,double,枚举,结构等都一样;
string是引用类型,在栈上存储地址,堆上存储值,在程序运行时动态的分配内存,所以允许在变量声明时声明为null,不为其分配内存。
以上,请参考




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