菜鸟请问,关于String赋值的困惑

初学者请教,关于String赋值的困惑我像下面这样创建一个String:String strABC然后在一个函数里面写:Str

初学者请教,关于String赋值的困惑
我像下面这样创建一个String:
String str="ABC";

然后在一个函数里面写:
String temp="DEF";
str=temp;

这样赋值的话,应该是把temp的引用赋给str吧?但是temp是局部变量,从函数里出来后应该就不存在了,为什么str的值还能保持“DEF”呢?