本帖最后由 hansnowqiang 于 2015-11-27 11:56 编辑
我说说我的理解:
修饰变量时:final int num =1 ;
在栈中有一个num—>通过一个地址值—>方法区常亮池中的“1”,用final修饰了num就是指这个地址值不能被修改了。
修饰String等类型时是一样的只不过是通过地址值指向了堆中new出来的“内容”这个地址值不能被修改了
修饰引用类型时:final int[] arr = {1,2,3,4}
同理:
在栈中开辟了一个区域有了 int[] arr —>通过一个地址值—>指向了在堆中的{1,2,3,4}这个数组。你可以通过这地址对堆中的这个数组的arr[x]做修改,但是你不能改变这个地址值。 |