String str;和String str=null;的区别:
像这种String str = xxx;
不管xxx是null还是其他字符串,str这个东西都是在栈里有块空间,可以理解为c的指针,=null的时候,里面存的是0,非null的时候存的是实际字符串的地址(堆中或者常量池中)。而String str;
这种情况,jvm同样也为其分配了一块空间,但是不知道值是多少
java语法要求引用之前必须初始化,所以你直接这么写,str根本不能引用,所以无所谓。
其实jvm也完全可以不为它分配空间。这个问题,说到底,其实就是java的语法要求,必须初始化的问题。
在不为赋值str=xxx时,是不能使用str的。
https://www.debugease.com/j2se/174258.html