zoukankan      html  css  js  c++  java
  • JAVA方法中的参数用final来修饰的效果

      很多人都说在JAVA中用final来修饰方法参数的原因是防止方法参数在调用时被篡改,其实也就是这个原因,但理解起来可能会有歧义,我们需要注意的是,在final修饰的方法参数中,如果修饰的是基本类型,那么在这个方法的内部,基本类型的值是不能够改变的,但是如果修饰的是引用类型的变量,那么就需要注意了,引用类型变量所指的引用是不能够改变的,但是引用类型变量的值是可以改变的。
      如下面的代码:
      
    package com.jd.test;
    
    
    public class Test{
          public static void main(String hh[]){
          int i = 1;
          System.out.println(i);
          checkInt(i);
          System.out.println(i);
    }
    
    /**
     * 对于基本类型,基本类型的值在方法内部是不能够改变的
     * @param i
     */
    public static void checkInt(final int i)
    {
    
           //编译不通过,final修饰的局部变量i的值是不能够改变的       
            //    i=10;
    
        }
    }

    对于引用类型的变量,请看下面的代码:

    package com.jd.test;
    
    import com.jd.domain.User;
    
    /**
     * 
     * final修饰参数的测试例子
     * 
     * @author  zhanghao10@jd.com
     * @since    2015-10-8
     */
    public class Test{
          public static void main(String hh[]){
          User user=new User();
          user.setId(1);
          user.setUserName("校长");
          user.setPassword("123456");
          checkInt(user);
    }
    
    /**
     * 对于基本类型,基本类型的值在方法内部是不能够改变的
     * @param i
     */
    public static void checkInt(final User user)
    {
          //user变量的引用是不能够改变的,否则的话,编译会报错
          //    user=new User();
          //user变量的值是能够修改的,但所指向的引用是不能够改变的
          user.setUserName("小王");
    
        }
    }
  • 相关阅读:
    服务端渲染
    node基础
    vue不同组件间的通信
    mui底部导航栏
    在mui中引入自定义的字体图标
    axios的使用
    vue多视图
    多元线性回归:波士顿房价预测问题TesnsorFlow实战
    MNIST手写数字识别:分类应用入门(实践篇)
    7-3 java高级 22_19寻找最大块的问题 (20 分)
  • 原文地址:https://www.cnblogs.com/xiohao/p/4861500.html
Copyright © 2011-2022 走看看