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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

老是看到先定义String s =null 然后又定义了s=new String("abc")  我想问的是不会合在一块String s =new String("abc")    为什么要象第一种方式那样定义呢 我看代码好多都用开始那种写法 我不知道第一种写法有什么好处呢 谢谢

评分

参与人数 1技术分 +1 收起 理由
老罗 + 1

查看全部评分

7 个回复

倒序浏览
是可以合并在一起定义的啊!!
先定义s=null 是在栈内存中定义了一个变量,栈内存一定时间后是可以自动释放的,等到需要的时候才在堆内存中开辟空间所以是new string()
主要好处还是在对内存的操作吧!
两句话可以同时定义,也就是 String s =new String()

评分

参与人数 1技术分 +1 收起 理由
老罗 + 1

查看全部评分

回复 使用道具 举报
黑马肖凯骏 发表于 2012-3-4 16:54
是可以合并在一起定义的啊!!
先定义s=null 是在栈内存中定义了一个变量,栈内存一定时间后是可以自动释放 ...

我知道可以同时定义 我看好多代码都这样定义 就是Sring s=null  我想问的是这样定义有什么好处呢
回复 使用道具 举报
String s=null;这时候没有任何的内存对象,而第二种,就当运行的时候就产生了两个对象,一个new,一个字符串,所以你说哪个好,,内存优化的好了啊。
回复 使用道具 举报
我觉得是编程风格的问题,提醒注意避免NullPointerException,其他的没什么特殊之处,毕竟成员初始化自动赋值也是null,
如果说特殊之处,就是在局部定义的时候,这是必须的。
还有就是这类似“懒汉式”吧。String用懒汉式安全性不好。
null的特殊就在于它什么都不是,也就什么都不能做,。。。我就知道这些了

评分

参与人数 1技术分 +1 收起 理由
老罗 + 1

查看全部评分

回复 使用道具 举报
定义的变量要初始化,编程良好的习惯,就像C++定义指针没初始化是件恐怖的事
回复 使用道具 举报
djx900 黑马帝 2012-3-4 21:27:24
7#
上来定义变量 有助于全局使用变量 而且 需要的时候才初始化。不知道我这么说对不对

评分

参与人数 1技术分 +1 收起 理由
老罗 + 1

查看全部评分

回复 使用道具 举报
null原来还是关键字啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马