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
