Java中定义变量的问题

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

String str=null;

String str="";

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

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

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

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

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