final修飾基本類型變量
當使用final修飾基本類型變量時,不能對基本類型變量重新賦值,因此基本類型變量不能被改變
final修飾引用類型變量
當使用final修飾引用類型變量時,它保存的僅僅是一個引用,final只能保證這個引用類型變量所引用的地址不會改變,即一直引用同一個對象,但這個對象完全可以改變
package com.j1803.finalTest;
import java.util.Arrays;
public class FinalReferenceTest {
public static void main(String[] args) {
//final修飾數組變量,iArr是一個引用變量
final int [] iArr={5,6,12,9};
System.out.println(Arrays.toString(iArr));
//對數組元素進行排序,合法
Arrays.sort(iArr);
System.out.println(Arrays.toString(iArr));
//對數組iArr重新賦值,合法
iArr[2]=-100;
//下面語句對iArr重新賦值,非法
//iArr=null;
//final修飾一個Person變量,p是一個引用變量
final Person p=new Person(22);
//改變Person對象p的實例變量,合法
p.setAge(45);
System.out.println(p.getAge());
//非法
//p=null;
}
//final修飾數組變量,iArr是一個引用變量
final int [] iArr={5,6,12,9};
System.out.println(Arrays.toString(iArr));
//對數組元素進行排序,合法
Arrays.sort(iArr);
System.out.println(Arrays.toString(iArr));
//對數組iArr重新賦值,合法
iArr[2]=-100;
//下面語句對iArr重新賦值,非法
//iArr=null;
//final修飾一個Person變量,p是一個引用變量
final Person p=new Person(22);
//改變Person對象p的實例變量,合法
p.setAge(45);
System.out.println(p.getAge());
//非法
//p=null;
}
}
class Person{
private int age;
class Person{
private int age;
public int getAge() {
return age;
}
return age;
}
public void setAge(int age) {
this.age = age;
}
this.age = age;
}
public Person(int age) {
super();
this.age = age;
}
}
super();
this.age = age;
}
}