java中final修饰方法传入参数的含义

final类型修饰的参数分为两种类型 基本类型 与引用类型 

参数加final

1、斯坦福教授说的好,方法可以比喻成一台机器(面包机),没错,在我的机器(方法)里面,我要的参数加了final(要原料),你给我传过来的参数,机器里面就无法改了,也就是说在机器里的这个参数,一直指向的都是你传进来的参数。

public class FinalNBA {
    public static void main(String args[]) {
        Curry curry = new Curry();
        curry.setSmallName("small student");
        printAll(curry);
        System.out.println(curry);
    }
  public static void printAll(final Curry temp){
        temp.setSmallName("fk do it");
        System.out.println(temp.getSmallName());
//        temp = new Curry();  传送进来的Curry引用是final,不可以再赋值了,这里一定会报错哦!
    }
}


2、总结,无论参数是基本数据类型,还是引用数据类型,只要加了final,不好意思,该参数不可以再赋值(实参传进来给形参,就相当于初始化完成)。。。。可以防止在方法里面不小心重新赋值,造成一些不必要的麻烦!!!

3、不加final的参数,可能会出现的错误是

public static void printAll(Curry temp){
        temp = new Curry(); //这就是出现的问题,又new了一个库里,与调用该方法时传进来的库里毫无关系了!!
        temp.setSmallName("fk do it");
        System.out.println(temp.getSmallName());
    }

最后关于final修饰的变量是引用不能改变还是引用的对象不能改变:https://blog.csdn.net/i_am_tomato/article/details/46762081

猜你喜欢

转载自blog.csdn.net/Thinkingcao/article/details/83070259
今日推荐