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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 王起 于 2013-3-15 13:06 编辑

为什么定义一个string类型的变量可以为null而char就不行?

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

5 个回复

倒序浏览
char表示一个字符.如果不填 好像是0 吧...
string是可以没有的.我认为这是最没有显示的数据类型了

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
整数型(byteshortintlong)的基本类型变量的默认值为0
单精度浮点型(float)的默认值为0.0f
双精度浮点型(double)的默认值为0.0d
字符型(char)的默认值为 ‘\u0000’
布尔型(boolean)的默认值为false
String的默认值为null

至于为什么能而为什么不能,这个问题无意义。就好像数学算法上为什么(1+1=2),这个结论是早就定义好的。

点评

黑马论坛2013年加分及其惩罚规则  发表于 2013-3-11 21:37

评分

参与人数 1技术分 +1 收起 理由
张文 + 1 按理说不能给你技术分的,请看板块置顶帖。.

查看全部评分

回复 使用道具 举报
因为char是属于基本类型 数据是存在栈(stack)中 而string不属于基本类型 是存在堆(heap)中

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
谢谢楼上的2位
回复 使用道具 举报
这个要从char类型和string类型的数据来看。
char类型是值类型,存在在栈上,在编译时要求分配内存,所以必须为其赋初值,其他值类型如int,double,枚举,结构等都一样;
string是引用类型,在栈上存储地址,堆上存储值,在程序运行时动态的分配内存,所以允许在变量声明时声明为null,不为其分配内存。
以上,请参考

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马