因为String是引用型变量,凡是引用型变量,它的值都是存储在内存的堆区中的,而你定义的String那个变量名所表示的是这个字符串在堆区中的地址,例如你定义一个String a = “A”。其实这个字符串“A”是存储在内存的堆区中,而a这个变量是在内存的栈区中开辟的空间用于存储“A”在堆区中的地址的,“A”在堆区中存储好了之后,存储它的这块区域会生成一个地址(地址名随机的,假设是0x0088),然后这个地址就会返回给栈区中的a,所以a这个引用型变量里面实际存储的是0x0088这个地址,而不是字符串“A”,所以你不能拿一个字符串赋值给它,因为字符串存储在堆区中,a在栈区中不存字符串,存的是个地址
|