为啥final类型的map或者arraylist可以修改数据 而final类型的String变量不可以修改数据呢
比如 final Map map =new HashMap(); 可以往map里put数据
final List list =new ArrayList(); 可以往list里add数据
但是 final String s =“123”; 然后s就不可修改数据了
同样是final 为啥map和list可以修改 但是string不可以修改呢
解答:
1.对List或map的add或put操作,没有修改引用。而对字符串的修改,是整个引用都要指向一个不同的字符串了。
2.final 只是表示引用不可以修改,
如果你先写final Map map =new HashMap(); ,
再写 map =new HashMap(); 同样会报错
3.map和list只是个地址,final的意思是地址不能改,但是地址指向的内容当然可以改。
String本身就代表内容,是个值,所以不能改了。