Java中的final修饰形参
1 package xingcan; 2 3 public class BB { 4 5 public int i = 4; 6 7 }
1 package xingcan; 2 3 public class PP { 4 5 public static void f(final BB b) {//我的理解是无法修改b 6 7 b.i = 55; 8 } 9 10 public static void main(String[] args) { 11 12 BB x = new BB(); 13 14 f(x); 15 16 System.out.println(x.i);//但事实上是修改了。。。,不知为什么???? 17 18 /** 19 *运行结果 20 *55 21 */ 22 } 23 24 }
final修饰基本类型(int,double,...)时值不能改变:例final int a = 6;a 的值就是6,不能改.
修饰引用类型时,是把引用的地址不能改变,但所引用的对象的值可以改变,
比如上述那个例子:如果你想改变b的引用地址是错误的.如:b = new BB();是错的,
但可以改变b引用对象的值,如b.i = 2;
总结:对于基本类型,不可变指的是值
对于引用类型,不可变指的是引用地址
【签名→→→】【****知其然知其所以然****】
工具只能帮助我们解决我们认识到的问题,解决不了我们都没理解的问题。
不能再把一切扔给框架、容器、工具!
首先理解你的业务逻辑,理解你要实现的功能,
然后搞清楚框架、容器、工具会帮助我们做什么。
只有理解了自己的业务逻辑,理解了自己的代码,理解了自己要用到的第三方代码,
才能真正完美地实现我们需要的功能!