Java中的final修饰形参

java

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;

  总结:对于基本类型,不可变指的是值

     对于引用类型,不可变指的是引用地址

以上是 Java中的final修饰形参 的全部内容, 来源链接: utcz.com/z/394840.html

回到顶部