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("小王");
    
        }
    }
  • 相关阅读:
    shell编程—简介(一)
    短信验证码测试项
    测试,不断成长
    初探软件测试心理学
    观察力,细心需要强化
    1=4,2=8,3=24,4=??问题
    IOS空数据页面,网络加载失败以及重新登陆View的封装(不需要继承)
    iOS 快速排序
    iOS支付宝,微信,银联支付集成封装调用(下)
    iOS支付宝,微信,银联支付集成封装(上)
  • 原文地址:https://www.cnblogs.com/xiohao/p/4861500.html
Copyright © 2011-2022 走看看