1. 程式人生 > >java final 修飾的引數小解

java final 修飾的引數小解


/**
 * <p>
 * final修飾的基本型別引數,不允許修改,否則編譯即報錯;

* final修飾的引用型別引數,不能修改引用,但可以修改引用物件內部的屬性;
 */
public class Test {
    public static void main(String hh[]){
        User user=new User();
        user.setId(1);
        user.setUserName("校長");
        user.setPassword("123456");
        checkInt(user);
        
        int i = 1;
        System.out.println(i);
        checkInt2(i);
        System.out.println(i);
  }

  /**
   * 對於基本型別,基本型別的值在方法內部是不能夠改變的
   * @param i
   */
  public static void checkInt(final User user)
  {
        //user變數的引用是不能夠改變的,否則的話,編譯會報錯
        //    user=new User();
        //user變數的值是能夠修改的,但所指向的引用是不能夠改變的
        user.setUserName("小王");

   }
  
  /**
   * 對於基本型別,基本型別的值在方法內部是不能夠改變的
   * @param i
   */
  public static void checkInt2(final int i)
  {

         //編譯不通過,final修飾的區域性變數i的值是不能夠改變的       
//              i=10;

      }
  
}
class User{
    int id;
    String userName;
    String password;
    /**
     * @return the id
     */
    public int getId() {
        return id;
    }
    /**
     * @param id the id to set
     */
    public void setId(int id) {
        this.id = id;
    }
    /**
     * @return the userName
     */
    public String getUserName() {
        return userName;
    }
    /**
     * @param userName the userName to set
     */
    public void setUserName(String userName) {
        this.userName = userName;
    }
    /**
     * @return the password
     */
    public String getPassword() {
        return password;
    }
    /**
     * @param password the password to set
     */
    public void setPassword(String password) {
        this.password = password;
    }
    
}