2.final关键字

2.1 final的实质

  就是说,实际上final修饰的东西,只是地址不能改变(即引用不能改变),但是对应地址内的值是可以修改的。

2.2 final修饰不同变量的对比

所以final Map map = new HashMap();

        final List list = new ArrayList();

  final String a = “2”;

  在这三句中分别声明了一个map、list和a字符串,其中map和list是可以修改的,比如可以使用map.put()、map.remove()、list.add();原因:map和list对应的是栈中存储的地址,所以其地址内的值是可以改变的,但是字符串a为什么不能修改呢,实际上String a只是创建了一个指向“2”值的引用,在创建时就已经明确值不可变,如果要修改值,实际上是修改了a的引用地址。

原文地址:https://www.cnblogs.com/mokpiet/p/13650142.html