2 gaodml gaodml 于 2014.09.18 13:36 提问

Java中定义变量的问题

各位在工作中,如果把变量提取出来定义,你们会怎么写?

String str=null;

String str="";

谁能告诉我哪个方法好?
第一个声明对象但是不分配空间,第二个直接分配空间

3个回答

anikaka
anikaka   2014.09.18 13:47

第一个是最好了,因为String str="";等于创建了一个对象。而第一个是个null引用所以二者的区别在于是否有对象的创建。建议使用第一个

gaodml
gaodml 如果是声明一个list呢? 也是null?
大约 3 年之前 回复
qiaojiew
qiaojiew   2014.09.18 14:36

String str=null;是定义了一个变量,这个变量没有指向对象,不会在堆中创建对象只是在栈中创建了变量,String

str=""在栈中创建了一个变量和在堆中创建了一个对象,第一个好

gaodml
gaodml 如果是声明一个list呢? 也是null?
大约 3 年之前 回复
fanxue820
fanxue820   2014.09.19 12:56

第一个声明对象没有分配空间,第二创建一个对象,并分配空间str就指向所分配的空间,如果你之后改变str的值,就是改变str的指向,虽说""空间要等java的垃圾回收机制自动回收,但还是浪费了空间。如果有很多用户访问,很有可能造成服务器崩溃。个人感觉还是String str=null好些

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!