黑马程序员技术交流社区

标题: 请问下 String s =null这种方式定义的好处 谢谢 [打印本页]

作者: 沙漠里的小鱼    时间: 2012-3-4 15:44
标题: 请问下 String s =null这种方式定义的好处 谢谢
老是看到先定义String s =null 然后又定义了s=new String("abc")  我想问的是不会合在一块String s =new String("abc")    为什么要象第一种方式那样定义呢 我看代码好多都用开始那种写法 我不知道第一种写法有什么好处呢 谢谢
作者: 黑马肖凯骏    时间: 2012-3-4 16:54
是可以合并在一起定义的啊!!
先定义s=null 是在栈内存中定义了一个变量,栈内存一定时间后是可以自动释放的,等到需要的时候才在堆内存中开辟空间所以是new string()
主要好处还是在对内存的操作吧!
两句话可以同时定义,也就是 String s =new String()
作者: 沙漠里的小鱼    时间: 2012-3-4 17:06
黑马肖凯骏 发表于 2012-3-4 16:54
是可以合并在一起定义的啊!!
先定义s=null 是在栈内存中定义了一个变量,栈内存一定时间后是可以自动释放 ...

我知道可以同时定义 我看好多代码都这样定义 就是Sring s=null  我想问的是这样定义有什么好处呢
作者: 种法腾    时间: 2012-3-4 17:37
String s=null;这时候没有任何的内存对象,而第二种,就当运行的时候就产生了两个对象,一个new,一个字符串,所以你说哪个好,,内存优化的好了啊。
作者: 许圣建    时间: 2012-3-4 20:32
我觉得是编程风格的问题,提醒注意避免NullPointerException,其他的没什么特殊之处,毕竟成员初始化自动赋值也是null,
如果说特殊之处,就是在局部定义的时候,这是必须的。
还有就是这类似“懒汉式”吧。String用懒汉式安全性不好。
null的特殊就在于它什么都不是,也就什么都不能做,。。。我就知道这些了
作者: 马胜平    时间: 2012-3-4 21:17
定义的变量要初始化,编程良好的习惯,就像C++定义指针没初始化是件恐怖的事
作者: djx900    时间: 2012-3-4 21:27
上来定义变量 有助于全局使用变量 而且 需要的时候才初始化。不知道我这么说对不对
作者: 许圣建    时间: 2012-3-5 00:20
null原来还是关键字啊




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