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("小王");

    }
}

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM