如果String str="";跟String str=null;一不一样?
两者是有区别的:
堆栈中:假设声明String s1 = null;String s2 = “”;
其实上栈中会有存放s1,但是堆中没有产生数据;但是对于第二条语句,不仅栈中有s2,堆中也会有“”(空字符串,假如以前存在的话,s2会直接指向,假如没有,就会新建一个);
方法引用:s1为null,不能调用String的任何方法,否则会报NullPointerException异常;而“”则可以调用String的任何方法,如字符串的拼接或者是求长度等。